算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
1、基本特性:
- 输入输出
- 有穷性
- 确定性
- 可行性
2、设计要求
- 正确性
- 可读性
- 健壮性(当输入不合法时,进行相关处理,而不是出现异常或者是莫名其妙的结果)
- 时间效率高
- 存储量低
3、算法效率的度量方法
- 事后统计法
受硬件影响较大,需要事先实现浪费时间。不推荐。 - 事前分析估计方法
依据统计方法对算法进行估计。
程序在计算机上运行时所消耗的时间取决于:
1、算法的策略、方法。
2、编译产生的代码质量。
3、输入的规模。
4、机器执行指令的速度。
4、算法时间复杂度
使用大O记法
推到大O阶:
1、用常数1取代运行时间中的所有加法常数。
2、在修改后的运行次数函数中,只保留最高阶项。
3、如果最高阶项存在且不是1,则去除与这个项相乘的常数。
得到的结果就是大O阶。
常数阶:O(1)
线性阶:O(n)
对数阶:O(lognlogn)
平方阶:O(n2n2),如果是外循环m,内循环n,那就是O(n×mn×m)
常见时间复杂度
| 执行次数函数 | 阶 | 非正式术语 |
|---|---|---|
| 1212 | O(1)O(1) | 常数阶 |
| 2n+32n+3 | O(n)O(n) | 线性阶 |
| 3n2+2n+13n2+2n+1 | O(n2)O(n2) | 平方阶 |
| 5log2n+605log2n+60 | O(logn)O(logn) | 对数阶 |
| 2n+3nlog2n+362n+3nlog2n+36 | O(nlogn)O(nlogn) | nlogn阶 |
| 8n3+2n2+3n+88n3+2n2+3n+8 | O(n3)O(n3) | 立方阶 |
| 2n2n | O(2n)O(2n) | 指数阶 |
耗费时间大小排序
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
本文介绍了算法的基本概念,包括其特性和设计要求,并详细解释了算法效率的度量方法,特别是时间复杂度的评估方式及其重要性。

被折叠的 条评论
为什么被折叠?



