===》点我返回目录《===
算法是计算机上的一系列操作,每个算法都需要占用计算机的计算资源,我们要衡量算法的时间复杂度和空间占用情况。
时间复杂度,我们一般用大O表示,我们会看三个指标:最坏情况下的时间复杂度;平均时间复杂度;最好情况下时间复杂度。
常数阶:O(1)
对数阶:O(log2n)
线性阶:O(n)
线性对数阶:O(nlog2n)
平方阶:O(n²)
立方阶:O(n³)
指数阶:O(2^n)
阶乘:O(n!)
分析程序代码,记录每一个操作,这样做不太可行,工作量太大,所以一般只用衡量执行频度最高的语句所消耗的时间,得出一个数量级就可以了。典型的是分析循环递归批量移动位置等操作。
空间复杂度是指算法为了运行所需要的额外空间。常见的有:
常数阶 O(1):冒泡排序,插入排序,选择排序,希尔排序,堆排序。
线性阶 O(n):二路归并排序。
对数阶 O(log2n):快速排序。