排序演算法總結

2021-08-22 08:30:49 字數 958 閱讀 2091

排序演算法關注的幾個點

1、是否是穩定排序演算法?

(1)穩定排序演算法指:排序時,相同元素不進行交換,保持原有序列的相對位置。

優點:

(1)減少不必要的交換;

(2)當排序演算法穩定時,排序結果可以為後續排序使用;

舉例:

乙個班學生已經按照學號大小排好序,此時要求按照數學成績大小再進行排序,如果成績相同,必須按照學號從小到大的順序排列。

若採用穩定的排序演算法對數學成績進行排序,則成績相同時,學號的順序滿足從小到大,不需要再次對學號進行排序;

若採用不穩定的排序演算法,則需要再次對成績相同的學生對應的學號進行排序。

所以,穩定的排序演算法能夠節省時間。

a) 穩定的排序演算法:氣泡排序、歸併排序、桶排序、插入排序、計數排序;

b) 不穩定排序演算法:選擇排序、快速排序、希爾排序、堆排序;

2、如何將不穩定排序演算法改為穩定排序?

solution method: 將每個元素加入乙個index,表示初始陣列的索引值,當不穩定排序演算法排好序之後,相同大小的元素再按照index進行排序,就轉化為穩定排序演算法。

3、時間複雜度

平均時間複雜度是o(n^2)的演算法:氣泡排序、直接插入排序、選擇排序;

平均時間複雜度是o(nlogn)演算法:快速排序、希爾排序、堆排序、歸併排序;

時間複雜度是o(n)演算法:桶排序、計數排序;

4、空間複雜度

不需要占用額外的記憶體空間的排序演算法有:

氣泡排序、選擇排序、直接插入排序、希爾排序、堆排序、快速排序;

需要額外記憶體空間的排序演算法:歸併排序、計數排序、桶排序;

5、當序列基本有序,規模較小時,採取直接插入排序演算法;

當序列較大時,採取快速排序演算法;

要求穩定時,採取歸併排序演算法。

6、每種演算法的最好、平均、最差時間複雜度;輔存空間、穩定性參照一下博文。

排序演算法總結

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 的演算法。快速排序 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來...