演算法複雜度
時間複雜度:
常見的時間複雜度有:常數階o(1)
,對數階o(log2
n
),
線性階o(n),
線性對數階o(nlog2
n
),
平方階o(n
2),
立方階o(n
3)
,..., k次方階o(n
k),
指數階o(2
n)。
隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。
空間複雜度:
如當乙個演算法的空間複雜度為乙個常量,即不隨被處理資料量n的大小而改變時,可表示為o(1);當乙個演算法的空間複雜度與以2為底的n的對數成正比時,可表示為0(10g2n);當乙個演算法的空i司複雜度與n成線性比例關係時,可表示為0(n).若形參為陣列,則只需要為它分配乙個儲存由實參傳送來的乙個位址指標的空間,即乙個機器字長空間;若形參為引用方式,則也只需要為其分配儲存乙個位址的空間,用它來儲存對應實參變數的位址,以便由系統自動引用實參變數。
各排序演算法的優缺點比較
1.快速排序
當待排序元素的關鍵字隨機分布時,快速排序的平均時間最短。快速排序比堆排序和歸併排序要快2到3倍。
快速排序會出現最壞情況。
快速排序是不穩定的。
2.堆排序
不會出現最壞情況。
3.簡單插入排序
當待排序序列基本有序時,可以使用簡單插入排序。
4.歸併排序
歸併排序是穩定的,但是需要乙個同樣大小的儲存空間。
arrays.sort()使用這個演算法進行排序。
歸併排序用遞迴實現,核心過程是將兩個已經有序的陣列歸併成乙個大的有序陣列,只需要同時遍歷比較即可。
排序演算法時間複雜度和空間複雜度比較
n 2表示n的平方,選擇排序有時叫做直接選擇排序或簡單選擇排序 排序方法平均時間最好時間最壞時間 桶排序 不穩定 o n o n o n 基數排序 穩定 o n o n o n 歸併排序 穩定 o nlogn o nlogn o nlogn 快速排序 不穩定 o nlogn o nlogn o n ...
各種排序演算法複雜度比較
寫在前面 筆試題目當中會出現各種排序演算法的比較,分為最好,最壞,平均情況的複雜度比較,在這裡總結一下。主要內容 最好情況 一般會這麼問 在各自最優條件下以下演算法複雜度最低的是 看清題目的要求是問在最優的條件下,所以插入排序和氣泡排序是最優的為o n 的複雜度。氣泡排序這裡為啥最好情況時o n 氣...
各類排序演算法複雜度比較
各種排序演算法比較 各種常用排序演算法 類別排序方法 時間複雜度 空間複雜度 穩定性複雜性 特點最好 平均最壞 輔助儲存 簡單插入 排序直接插入 o n o n2 o n2 o 1 穩定簡單 希爾排序 o n o n1.3 o n2 o 1 不穩定複雜 選擇排序 直接選擇 o n o n2 o n2...