排序演算法總結

2022-02-09 13:51:59 字數 2986 閱讀 9865

排序演算法

插入排序

氣泡排序

選擇排序

歸併排序

快速排序

堆排序

計數排序

基數排序

桶排序

思想

構建有序序列

兩兩交換

每次找乙個最小值

分治法思想

分治法思想

最小堆、最大堆

數字本身的屬性

對資料選擇多種基數

函式的對映關係、hash

資料結構

陣列

陣列

陣列

陣列

不定

陣列

陣列

陣列

陣列

最差時間複雜度

o(n^2)

o(n^2)

o(n^2)

o(n*lgn)

o(n^2)、改進o(n*lgn)

o(n*lgn)

o(n+k)

o((n+k)*d)

o(n^2)

最優時間複雜度

o(n)

o(n^2)、改進o(n)

o(n^2)

o(n*lgn)

o(n*lgn)

o(n*lgn)

o(n+k)

o((n+k)*d)

o(n)

平均時間複雜度

o(n^2)

o(n^2)

o(n^2)

o(n*lgn)

o(n*lgn)

o(n*lgn)

o(n+k)

o((n+k)*d)

o(n)

最差空間複雜度

總共o(n) ,需要輔助空間o(1)

總共o(n) ,需要輔助空間o(1)

總共o(n) ,需要輔助空間o(1)

о(n)

ω(n)額外空間

總共o(n) ,需要輔助空間o(1)

o(n+k) 額外空間,k為序列中max-min+1

o(n) 額外空間 (k為特徵個數)

o(k) 額外空間

穩定性

穩定

穩定

不穩定

穩定

不穩定

不穩定

穩定

穩定

穩定

空間複雜度:

in-place sort(不占用額外記憶體或占用常數的記憶體):插入排序、選擇排序、氣泡排序、堆排序、快速排序。

out-place sort:歸併排序、計數排序、基數排序、桶排序。

穩定性:

stable sort:插入排序、氣泡排序、歸併排序、計數排序、基數排序、桶排序。

unstable sort:選擇排序、快速排序、堆排序。

比較排序:常見的排序演算法都是比較排序。非比較排序:計數排序、基數排序和桶排序。

計數排序:待排序的陣列元素都是整數,適合資料分布集中的排序。

基數排序:每位的排序是計數排序;桶排序:輸入陣列的元素都在[0,1)之間。

比較排序的時間複雜度通常為o(n2)或者o(n*lgn),比較排序的時間複雜度下界就是o(n*lgn);而非比較排序的時間複雜度可以達到o(n),但是需要額外的空間開銷。

排序演算法總結

1 直接插入排序 1 穩定性 穩定 2 適用情況 待排記錄規模較小,或者記錄已經基本有序 2 希爾排序 1 穩定性 不穩定 2 特點 希爾排序的執行時間依賴於增量序列,它的效率比直接插入排序有較大的改進。3 氣泡排序 1 穩定性 穩定 2 特點 當待排記錄基本有序是,氣泡排序是不錯的選擇 但由於氣泡...

排序演算法總結

1 選擇排序 選擇排序的思想是依次從待排序數列中選擇最大 小 的 第二大 小 的等等,然後依次重新排列為有序數列。void selectionsort int a,int n if min i 時間複雜度o n 2 2 歸併排序 void merge int a,int left,int mid,i...

排序演算法總結

學習了這麼多的排序演算法,還沒有做個總結,呵呵 氣泡排序 氣泡排序是最慢的排序演算法。在實際運用中它是效率最低的演算法。它通過一趟又一趟地比較陣列中的每乙個元素,使較大的資料下沉,較小的資料上公升。它是 o n 2 的演算法。快速排序 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來...