跳到主要内容

算法

算法:复杂度

时间复杂度

评估算法运行效率

常见的时间复杂度

按效率排序 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