===》點我返回目錄《===
算法是計算機上的一系列操作,每個算法都需要佔用計算機的計算資源,我們要衡量算法的時間複雜度和空間佔用情況。
時間複雜度,我們一般用大O表示,我們會看三個指標:最壞情況下的時間複雜度;平均時間複雜度;最好情況下時間複雜度。
常數階:O(1)
對數階:O(log2n)
線性階:O(n)
線性對數階:O(nlog2n)
平方階:O(n²)
立方階:O(n³)
指數階:O(2^n)
階乘:O(n!)
分析程序代碼,記錄每一個操作,這樣做不太可行,工作量太大,所以一般只用衡量執行頻度最高的語句所消耗的時間,得出一個數量級就可以了。典型的是分析循環遞歸批量移動位置等操作。
空間複雜度是指算法爲了運行所需要的額外空間。常見的有:
常數階 O(1):冒泡排序,插入排序,選擇排序,希爾排序,堆排序。
線性階 O(n):二路歸併排序。
對數階 O(log2n):快速排序。