参考教材:《算法设计与分析(第2版)》 耿国华 主编 高等教育出版社
1、程序 = 数据结构 + 算法
2、算法的5个重要特征:
(1)有限性
(2)确定性(无二义)
(3)可行性
(4)输入
(5)输出
- 例:死循环——违反了有限性、除0错误——违反了可行性
3、算法的描述方式
(1)自然语言
(2)框图(流程图)
(3)伪代码
(4)类语言
(5)高级语言
4、求解问题的基本过程
(1)分析题意
(2)建立模型
(3)设计算法
(4)编写程序
(5)分析运算结果与算法性能
(6)改进
- 例:最大公约数问题
方法1:连续整数检测法
方法2:质因数分解法
方法3:欧几里得算法
5、算法设计与分析的任务
- 设计阶段:如何构造问题的解。常用的算法设计方法:分治法、动态规划、贪心、回溯等。
- 分析阶段:对算法的有效性及性能进行评价。
6、算法分析准则
- 正确性
- 可读性
- 健壮性
- 高效率和低存能量:评价算法运行效率的主要技术指标是:算法运行的时间复杂度和空间复杂度。
7、常用数学术语
-
计量单位:b B K M G T ms…
-
阶乘:n! = n × (n-1) × (n-2) × … × 2 × 1
-
排列组合
-
排列公式: A n k = n ⋅ ( n − 1 ) ⋅ ⋅ ⋅ ( n − k + 1 ) = n ! ( n − k ) ! A_n^k = n·(n-1)···(n-k+1)=\frac{n!}{(n-k)!} Ank=n⋅(n−1)⋅⋅⋅(n−k+1)=(n−k)!n!
-
组合公式: C n k = n ! ( n − k ) ! k ! = n ( n − 1 ) ⋅ ⋅ ⋅ ( n − k + 1 ) k ! C_n^k = \frac{n!}{(n-k)! k!} = \frac{n(n-1)···(n-k+1)}{k!} Cnk=(n−k)!k!n!=k!n(n−1)⋅
-