1.2 希爾排序
希爾排序屬於插入排序的一種,是直接插入排序的優化,其主要思想是:由於在序列基本有序的情況下,直接插入排序的效率很高,那麼,我們引入乙個增量incre,把以incre為間隔的元素做一次直接插入排序,使其基本有序;隨後,incre慢慢減小,繼續做上述直接插入排序,最後incre變成1,退化成直接插入排序,但這時候的序列已經基本有序,排序效率非常高。實際上就是讓相對較小的元素跳躍著往前移動。其過程如圖所示:
希爾排序的時間、空間複雜度、穩定性以及適用場合如圖:
如圖所示,希爾排序的效能在四個改進演算法中算不上好(在o(nlgn)~o(n^2)之間,其它3個的平均時間複雜度都為o(nlgn)),但希爾排序的意義在於突破了o(n^2)的限制,為後來更優秀演算法開啟了思路。
資料結構與演算法小結 排序(六)
3.2 快速排序 快速排序綜合效能優越,其主要思想在於找乙個pivotvalue,通過不斷的比較 交換,將序列變成pivotvalue前的值都比它小,在其後的值都比它大 然後,再對pivotvalue前面的序列和後面的序列分別使用同樣的方法得到具有該性質的序列.不斷遞迴呼叫至最底層即排好序。其基本流...
資料結構與演算法小結 排序(三)
2.選擇排序 2.1 簡單選擇排序 簡單選擇排序的主要思想是,對第i個元素,將其與後面的n i個元素作比較,用乙個min變數儲存這n i 1個元素中的最小值的位置,比較完後將a min 和a i 交換 min i 簡單選擇排序進行了 n 2 2次比較,n次交換,交換的次數少。其主要過程如圖所示 簡單...
資料結構與演算法 排序(二)
接上篇,繼續介紹歸併排序與快速排序。歸併排序使用的是分治策略,核心思想也比較簡單。要排序乙個序列,首先從中間將序列一分為二,然後對劃分的前後兩個序列進行排序,再將排序好的序列合而為一,這樣原有的序列就已有序了。可見,歸併排序的核心在於合併有序序列。以下圖為例,有兩個待合併有序序列 5,6,8,9,與...