排序演算法為什麼需要考慮穩定性

2021-09-20 15:36:17 字數 537 閱讀 3120

僅僅用執行效率和記憶體消耗來衡量排序演算法的好壞是不夠的,針對排序演算法,我們還有乙個重要的度量指標,穩定性。

這個概念就是如果待排序的序列中存在值相同的元素,經過排序之後,相等元素之間原有的先後順序不變。

我來舉乙個例子說明下:2,9,3,4,8,3。排序後為2 3 3 4 8 9.如果3的前後順序沒有發生變化,那麼這種就叫穩定的排序。如果發生變化就叫不穩定排序。

舉乙個實際的例子:要給電商的訂單排序,訂單有兩個屬性,乙個是下單時間,乙個是訂單金額。

要求:對訂單根據金額從小到大排序,金額相同的話按照下單時間再排序。

那我們的做法可能先根據金額排序,之後對於每個金額相同的小區間按照下單時間排隊,這種思路簡單,但是實現稍顯複雜

借助穩定排序演算法,我們可以先按照訂單時間排序,之後再用穩定愛旭按照金額排序。穩定排序演算法可以保證金額相同的兩個物件再排序後的前後順序不變。

冒泡:原地排序,穩定排序。

快速排序:不穩定

例如6,11,3,9,8,7,3,2

比如9為pivot,交換之後後面的3就會跑到前面。所以不是穩定的。

排序演算法穩定性

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

排序演算法穩定性

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

排序演算法穩定性

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