排序演算法穩定性的問題

2021-09-26 21:52:27 字數 633 閱讀 8538

穩定性指的是原本排在前面的元素,排序後仍然保持在前面,如下,第乙個5和第二個5如果是穩定排序的話,兩者之間的相對位置仍然保持不變。

待排序的陣列:3,1,9,5,5,8,4。把第乙個5記作a,第二個5記作b。

如果是穩定排序,那麼排序後結果為:1,3,4,a,b,8,9

如果是不穩定排序,那麼排序後結果為:1,3,4,b,a,8,9

這點看起來好像沒啥不一樣的,因為反正兩個元素值是相同的,但是如果你要排序的元素不是單純的數值呢?比如是複雜的資料型別呢?就比如,然後你先排序的是按照id,相同id的再根據體重來排序?

待排序陣列:

id:    3,1,9,5,5,8,4

體重:1,2,6,3,7,2,5

如果是不穩定排序,同理,把第乙個5定義是a,第二個5定義為b,排序後結果:

id:    1,3,4,b,a,8,9

體重: 2,1,5,7,3,2,6

那麼現在a,b其實是相同的,但是我們現在還要根據第二個key來排序,也就是體重,所以如下這個時候就發現了,不穩定的排序造成了兩次無意義的交換,對資源造成了浪費。

id:    1,3,4,a,b,8,9

體重: 2,1,5,3,7,2,6

排序演算法穩定性

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

排序演算法穩定性

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

排序演算法穩定性

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