常用演算法之排序演算法 總結

2021-09-10 10:00:36 字數 1014 閱讀 3499

排序大的分類可以分為兩種:內排序和外排序。在排序過程中,全部記錄存放在記憶體,則稱為內排序,如果排序過程中需要使用外存,則稱為外排序。下面講的排序都是屬於內排序。

內排序有可以分為以下幾類:

(1)、插入排序:直接插入排序、二分法插入排序、希爾排序。

(2)、選擇排序:簡單選擇排序、堆排序。

(3)、交換排序:氣泡排序、快速排序。

(4)、歸併排序

(5)、基數排序

總結:一、穩定性:

穩定:氣泡排序、插入排序、歸併排序和基數排序

不穩定:選擇排序、快速排序、希爾排序、堆排序

二、平均時間複雜度

o(n^2):直接插入排序,簡單選擇排序,氣泡排序。

在資料規模較小時(9w內),直接插入排序,簡單選擇排序差不多。當資料較大時,氣泡排序演算法的時間代價最高。效能為o(n^2)的演算法基本上是相鄰元素進行比較,基本上都是穩定的。

o(nlogn):快速排序,歸併排序,希爾排序,堆排序。

其中,快排是最好的, 其次是歸併和希爾,堆排序在資料量很大時效果明顯。

三、排序演算法的選擇

1.資料規模較小

(1)待排序列基本序的情況下,可以選擇直接插入排序;

(2)對穩定性不作要求宜用簡單選擇排序,對穩定性有要求宜用插入或冒泡

2.資料規模不是很大

(1)完全可以用記憶體空間,序列雜亂無序,對穩定性沒有要求,快速排序,此時要付出log(n)的額外空間。

(2)序列本身可能有序,對穩定性有要求,空間允許下,宜用歸併排序

3.資料規模很大

(1)對穩定性有求,則可考慮歸併排序。

(2)對穩定性沒要求,宜用堆排序

4.序列初始基本有序(正序),宜用直接插入,冒泡

效能表;

常用排序演算法總結

總結些常見的排序演算法,方便以後可以重用。資料量不大,為了表達方便就直接使用了陣列。int data null data new int 1.氣泡排序 氣泡排序,從小到大排序 for int i 0 i data.length i 氣泡排序就是說,排序的過程像水裡往上冒的氣泡一樣,每個數字代表乙個氣...

常用排序演算法總結

常用排序演算法總結 選擇排序 對於長度為n的陣列,選擇排序需要大約n2 2詞比較和n次交換。插入排序 對於隨機排列的長度為n且主鍵不重複的陣列 1 平均情況下,需要 n2 4次比較以及 n2 4次交換。2 最壞情況下,需要 n2 2次比較以及 n2 2次交換 3 最好情況下,需要n 1次比較以及0次...

常用排序演算法總結

注 所有排序都是寫的由小到大排序的情況 1.插入排序 1 直接插入排序 穩定 arr sortedindex 1 key 注意這裡的下標 sortedindex 1 2 希爾排序 不穩定 希爾排序好的增量序列的共同特徵 希爾排序演算法 fromid 1801475 type syn 最後乙個增量必須...