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個元素如果大小相等也沒有人故意交換,這不會破壞穩定 性。那么,在短的有序序列合並的過程中,穩定是是否受到破壞?沒有,合並過程中我們可以保證如果兩個當前元素相等時,我們把處在前面的序列的元素保存在結 果序列的前面,這樣就保證了穩定性。所以,歸並排序也是穩定的排序算法。
⑥基數排序
穩定。
⑦希爾排序
不穩定。有自己的步長。
⑨堆排序
不穩定。