算法
算法:复杂度
时间复杂度
评估算法运行效率
常见的时间复杂度
按效率排序 O(1)< O(logn)< O(n)< O(nlogn)< O(n^2)< O(n^2logn)< O(n^3)
复杂问题的时间复杂度
O(n!) O(2^n) O(n^n)...
简单快速判断时间复杂度
1.确定问题规模
2.循环减半过程——logn(例子,涉及对半分组的算法)
3.k 层关于 n 的循环——n^k
空间复杂度
评估算法内存占用大小
算法使用了几个变量:O(1)
算法使用了长度为 n 的一维列表:O(n)
算法使用了 m 行 n 列的二维列表:O(mn)
“空间换时间”例子:分布式计算
递归
- 特点
调用自身
结束条件 - 汉诺塔问题
目的:将 n 个盘子从 A 移动到 C