排序演算法詳解

2021-07-10 12:06:16 字數 751 閱讀 9235

直接插入

二分插入

希爾排序

氣泡排序

快排 簡單選擇

堆排序

歸併排序

基數排序

總結:一、穩定性:

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

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

二、平均時間複雜度

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

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

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

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

三、排序演算法的選擇

1.資料規模較小

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

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

2.資料規模不是很大

(1)完全可以用記憶體空間,序列雜亂無序,對穩定性沒有要求,快速排序

,此時要付出log(n)的額外空間。

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

3.資料規模很大

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

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

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

排序演算法詳解

排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因為排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存.常見的內部排序演算法有 氣泡排序 選擇排序 插入排序 希爾排序 歸併排序 快速排序 堆排序等.介紹氣泡排序是一種簡單的排序演算法,這個演算...

排序演算法 詳解堆排序演算法

1 原理 堆排序是一種選擇排序,通過實現大小堆,來取出堆頂的資料,然後和最後乙個交換,然後將堆的大小減一,迴圈這個過程直到,只有乙個資料時停止。公升序建大堆,降序建小堆。2 問題 很多人會疑惑為什麼要交換之後再減小堆的大小呢?難道不交換就不能篩選出我們要的極值嗎?首先向下調整演算法的時間複雜度為o ...

排序演算法 詳解希爾排序演算法

希爾排序實際上是一種插入排序的優化,希爾排序的目的是先進行預排序,使陣列更加的有序,將需要排序的陣列分成n gap個大小為gap的子陣列,對子樹組進行插入排序。當gap等於1時,就相當於直接插入排序了。例如 9 8 7 6 5 4 3 2 1 排公升序 直接插入排序需要 45次 用希爾排序 時間複雜...