1、穩定性
①氣泡排序
比較是兩個相鄰的元素比較,交換是兩個相鄰的元素交換。所以如果兩個元素相等,就不用無聊地去交換吧,這樣也能減少交換次數。所以氣泡排序是穩定的。
②選擇排序
選擇排序是每次給第乙個位置選第一小的,給第二個位置選第二小的,以此類推.....。所以說兩個相等的元素可能因為選擇第乙個小的就會被打亂順序。例如5 8 5 2,這四個元素選第一小的2的時候會把5放入放入2的原位置,導致兩個5相對順序變化,所以不穩定。
③插入排序
插入排序是在已經有序的小序列的基礎上排序的。排序的規則是:有序小序列後的第乙個元素和有序中的最大的比,比他大的直接插入其後,比他小的往前找。相等的話直接插入該元素之後。所以插入排序是穩定的。
④快速排序
快速排序有兩個方向,左邊的i下標一直往右走,右邊的j下標一直往左走。i<=j 交換a[i]和a[j],如果i>j,交換a[j]和樞軸元素,完成一趟快排。不穩定。
⑤歸併排序
歸併排序是把序列遞迴地分成短序列,遞迴出口是短序列只有1個元素(認為直接有序)或者2個序列(1次比較和交換),然後把各個有序的短序列合併成乙個有序的長序列,不斷合併直到原序列全部排好序。可以發現,在1個或2個元素時,1個元素不會交換,2個元素如果大小相等也沒有人故意交換,這不會破壞穩定 性。那麼,在短的有序序列合併的過程中,穩定是是否受到破壞?沒有,合併過程中我們可以保證如果兩個當前元素相等時,我們把處在前面的序列的元素儲存在結 果序列的前面,這樣就保證了穩定性。所以,歸併排序也是穩定的排序演算法。
⑥基數排序
穩定。⑦希爾排序
不穩定。有自己的步長。
⑨堆排序
不穩定。
參考:
常用演算法穩定性分析
排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前兩 個相等的資料其在序列中的先後位置順序與排序後它們兩個先後位置順序相同。即 如,如果a i a j,ai 原來在 aj 位置前,排序後 ai 仍然是在 aj 位置前。1 簡單總結 選擇排序 快速排序 希爾排序 堆排序不是穩定的排序演算法 氣...
常用排序演算法穩定性分析
選擇排序 快速排序 希爾排序 堆排序不是穩定的排序演算法 氣泡排序 插入排序 歸併排序和基數排序都是穩定的排序演算法。研究排序演算法的穩定性有何意義?首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前兩個相等的資料其在序列中的先後位置順序與排序後它們兩個先後位置順序相同。再簡單具體一點...
常用排序演算法穩定性分析
選擇排序 快速排序 希爾排序 堆排序不是穩定的排序演算法 氣泡排序 插入排序 歸併排序和基數排序都是穩定的排序演算法。研究排序演算法的穩定性有何意義?首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前兩個相等的資料其在序列中的先後位置順序與排序後它們兩個先後位置順序相同。再簡單具體一點...