算法设计与分析_第一章_绪论
第一章 绪论
1.1为什么要学习算法
1.2算法及其重要特性
1.3算法的描述方法
1.4算法设计的一般过程
1.5重要的问题类型
1.1为什么要学习算法
1.算法——程序的灵魂
问题的求解过程:
分析问题→设计算法→编写程序→整理结果
程序设计研究的四个层次:
2.算法→方法学→语言→工具
提高分析问题的能力
算法的形式化→思维的逻辑性、条理性
1.2算法及其重要特性
1.算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。
2.算法的五大特性:
⑴ 输入:一个算法有零个或多个输入。
⑵ 输出:一个算法有一个或多个输出。
⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
⑷ 确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。
⑸ 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
1.3算法的描述方法
(1)自然语言
(2)流程图
(3)程序设计语言
(4)伪代码——算法语言
1.4算法设计的一般过程
1.理解问题
2.预测所有可能的输入
3. 在精确解和近似解间做选择
4. 确定适当的数据结构
5.算法设计技术
6.描述算法
7.跟踪算法
8.分析算法的效率
9.根据算法编写代码
1.5重要的问题类型
- 查找问题
- 排序问题
- 图问题
- 组合问题
- 几何问题
渐进符号
- 大O符号
定义1.1 若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n)),或称算法在O(f(n)中 - 大Ω符号
定义1.2 若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≥c×g(n),则称T(n)=Ω(g(n)) - Θ符号
定义1.3 若存在三个正的常数c1、c2和n0,对于任意n≥n0都有c1×f(n)≥T(n)≥c2×f(n),则称T(n)=Θ(f(n))