排序演算法穩定性的好處

2021-08-28 07:56:15 字數 908 閱讀 8655

在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中

r[i] = r[j],且r[i]在r[j]之前,而在排序後的序列中,r[i]仍在r[j]之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。

選擇排序、快速排序、希爾排序、堆排序不是穩定的排序演算法,

而氣泡排序、插入排序、歸併排序和基數排序是穩定的排序演算法。

選擇排序不穩定的例子:5 8 5 2 9第一次交換之後2 8 5 5 9

快速排序不穩定的例子:5 3 3 4 3 8 9 10 11  如果選擇第乙個數作為基準 , 第一次交換就是3 3 3 4 5 8 9 10 11  

希爾排序不穩定的例子:,h=2時分成兩個子串行  和   ,未排序之前

第二個子串行中的8在前面,現在對兩個子串行進行插入排序,得到  和 ,即  ,兩個8的相對次序發生了改變。

得到,重複之前的操作最後得到從而改變了兩個5的相對次序

穩定的排序演算法的好處:從乙個鍵上排序,然後再從另乙個鍵上排序,第乙個鍵排序的結果可以為第二個鍵排序所用。這樣,有可能減輕系統的開銷。

舉個例子:

在資料庫操作中,如下簡單**:

2(1)43

82(2)51

249上**第乙個列,如果需要第一列排序,且使用穩定排序演算法可得到12

2(1)

42(2)53

849如果使用非穩定的選擇排序演算法,則得到:12

2(2)

52(1)43

849這樣第二列並不是有序的。如果需要第二列有序,還需要再次排序一次。

排序演算法穩定性

學習中,有個問題叫做排序演算法穩定性 若待排序的序列中,存在多個具有相同關鍵字的記錄,經過排序,這些記錄的相對次序保持不變,則稱該演算法是穩定的 若經排序後,記錄的相對 次序發生了改變,則稱該演算法是不穩定的。假定在待排序的記錄序列中,存在多個具有相同鍵值的記錄,若經過排序,這些記錄的相對次序保持不...

排序演算法穩定性

快速排序 希爾排序 堆排序 直接選擇排序不是穩定的排序演算法,而基數排序 氣泡排序 直接插入排序 折半插入排序 歸併排序是穩定的排序演算法 首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai...

排序演算法穩定性

排序演算法穩定性 概念 假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,ri rj,且ri在rj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的 否則稱為不穩定的。排序的穩定性是指如果在排序的序列中,存在前後相同的...