演算法的穩定性

2021-08-09 16:15:43 字數 723 閱讀 5997

在資料結構中,我們研究了演算法的穩定性。其中,快速排序,堆排序以及直接選擇排序都是不穩定的排序。那麼為什麼這些是不穩定的排序,判定標準又是什麼。需要仔細了解一下。

什麼是穩定性?

所謂穩定性,就是假定在待排序記錄序列中,存在多個具有相同關鍵字的記錄,如果經過排序以後,這些記錄的相對次序保持不變,即原序列中,ri在rj之前,排完序之後,ri依然在rj之前,則稱這種排序演算法是穩定的,否則就是不穩定的。

所以不穩定的的演算法可以通過舉例證明,穩定的演算法就要進行演算法分析了。

舉例分析

先以氣泡排序為例,先用**說明

for (int i = 0; i < arr.length; i++)  

} }

可以看到,氣泡排序是把大的元素往後調,小的元素往前調。比較都發生在相鄰的兩個元素之間,如果兩個元素相等,是不會發生交換的,所以相同元素的前後順序沒有改變,所以氣泡排序是穩定的排序。

再說選擇排序,選擇排序最重要的思想,就是假設某個數是最小的or最大的,它是給某個位置選擇無序區元素中最小的那個。可以先舉個例子,比如5 2 5 4 1 這個序列,選擇排序會假設2是最小的,然後拿他和別的數去比,找到乙個最小的,放到2所在的位置。所以在這個排序中,第一趟的時候5會和1交換,兩個5的相對位置就發生了改變,所以選擇排序是不穩定的排序。

總結 雖然說證明乙個排序不穩定非常簡單,但是歸根結底還是要落實到**上,熟悉**,了解每個排序的運算過程,才可以真正的理解。

演算法 穩定性

本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者不穩定的人準備的。首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai aj,ai原來在位置前,排序後ai還是要在aj位置前。其次,說...

演算法的穩定性

之前一直不是很理解演算法的穩定性,最近看書有所感悟,乙個演算法如果是不穩定的那麼無法根據兩個屬性去排序,比如說學生的年齡和學號排序,先去排年齡,再去排學號,如果演算法是不穩定的那麼,第一次排序的結果會被第二次打亂從而達不到目的。所謂不穩定的排序,私以為就是那種存在大距離swap的排序函式,比如上表中...

mysql穩定性 MySQL的穩定性

isam表處理器 穩定 它管理所有在mysql 3.22和早期版本中的資料的儲存和檢索。在所有mysql版本中,中已經沒有乙個單獨 報告的 錯誤。得到乙個損壞的資料庫表的唯一已知方法是在乙個更新中途殺死伺服器,即使這樣也不大可能破壞任何資料而不能挽救,因為所有資料在每個查詢之間被倒入 flush 到...