Java排序演算法總結

2021-06-29 07:44:59 字數 831 閱讀 8288

前面講了10種基本的排序演算法,現在來作下總結,基於下面幾個方面來比較各個排序演算法的優劣:

時間複雜度,空間複雜度,穩定性,適用場景

排序演算法

時間複雜度

空間複雜度

穩定性適用場景

直接選擇排序

o(n^2)

o(1)

不穩定時間效率不高,但是空間效率很高,演算法實現比較簡單

堆排序o(nlogn),底數為2

o(1)

不穩定時間效率很高,但是不穩定

氣泡排序

o(n^2)

o(1)

穩定演算法實現比較簡單,穩定,且對於已基本排序的資料排序,時間複雜度為o(n)

快速排序

最好o(nlogn),底數為2 

最壞o(n^2)

平均o(nlogn),底數為2

o(logn),底數為2

不穩定時間效率很高,但是不穩定

直接插入排序

o(n^2)

o(1)

穩定折半插入排序

o(n^2)

o(1)

穩定時間效率比直接插入排序要好

希爾排序

o(n(logn)^2),底數為2

o(1)

不穩定歸併排序

o(nlogn),底數為2

o(n)

穩定空間複雜度較高

桶式排序

o(k+n)

o(k+n)

穩定待排序資料的範圍在0~k之間,只能為整形序列

基數排序

穩定依賴子關鍵字排序演算法,子關鍵字排序演算法必須是穩定的

關於穩定性的更深入分析,可以參考:

排序演算法總結 java

1 歸併排序 mergesort 歸併 排序具體工作原理如下 假設序列共有n個元素 將序列每相鄰兩個數字進行歸併操作 merge 形成floor n 2 個序列,排序後每個序列包含兩個元素 將上述序列再次歸併,形成floor n 4 個序列,每個序列包含四個元素 重複步驟2,直到所有元素排序完畢 時...

Java排序演算法(十二) 總結

前面講了10種基本的排序演算法,現在來作下總結,基於下面幾個方面來比較各個排序演算法的優劣 時間複雜度,空間複雜度,穩定性,適用場景 排序演算法 時間複雜度 空間複雜度 穩定性適用場景 直接選擇排序 o n 2 o 1 不穩定時間效率不高,但是空間效率很高,演算法實現比較簡單 堆排序o nlogn ...

排序演算法總結(java實現)

排序演算法的分類如下 1.插入排序 直接插入排序 折半插入排序 希爾排序 2.交換排序 冒泡泡排序 快速排序 3.選擇排序 直接選擇排序 堆排序 4.歸併排序 5.基數排序。關於排序方法的選擇 1 若n較小 如n 50 可採用直接插入或直接選擇排序。當記錄規模較小時,直接插入排序較好 否則因為直接選...