复杂度
- 主定理(Master Theorem): 算法的运行时间
- 排序复杂度
- 以下对应排序算法最好情况、最坏情况及平均情况的时间复杂度
- 冒泡排序: O(n)、O(\(n^2\))、O(\(n^2\))
- 插入排序: O(n)、O(\(n^2\))、O(\(n^2\))
- 选择排序: O(n)、O(\(n^2\))、O(\(n^2\))
- 归并排序: O(nlgn)、O(nlgn)、O(nlgn)
- 堆排序: O(nlgn)、O(nlgn)、O(nlgn)
- 快排序: O(nlgn)、O(\(n^2\))、O(nlgn)
- 以下对应排序算法的空间复杂度
- 冒泡排序: O(1)
- 插入排序: O(1)
- 选择排序: O(1)
- 归并排序: O(n)
- 堆排序: O(1)
- 快排序: O(nlgn)
- 程序运行的时间记作函数T(n),其中n表示问题的规模,我们一般只关注随着问题规模n趋于无穷时函数中对函数结果影响最大的项,也就是最高次项(其系数也可忽略)。简化后的式子被称为这个程序算法的时间复杂度,记作\(O(f(n))\),\(f(n)\)就是简化后的式子。更准确地说O代表了运行时间函数的一个渐进上界,即T(n)在数量级上小于等于f(n)
- \(O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)\)
- 最内层执行次数最多的语句决定了整个算法的趋势
排序