各種排序算法的穩定性以及時間和空間復雜度分析


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

  ⑥基數排序

    穩定。

  ⑦希爾排序

    不穩定。有自己的步長。

  ⑨堆排序

    不穩定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM