演算法排序之希爾排序(shell sort)

2021-08-14 20:01:17 字數 414 閱讀 6252

前面我曾經提到過氣泡排序與選擇排序,今天我來介紹一種新的排序方法——希爾排序。

前面提到的氣泡排序和選擇排序,其演算法複雜度均為o(n^2),就效能而言,選擇排序還是要略高於氣泡排序的。今天提到的希爾排序時間複雜度為o(n^(3/2)),是較高階的一種演算法。

希爾演算法原理:

通過設定乙個增量,進行跳躍式的比較,實現基本有序,即小的數基本在前面,大的數基本在後面。這樣在一定程度上,使得時間複雜度降低。希爾排序最主要的地方在於,它將關鍵字較小的記錄,不是一步一步的往前挪移,而是跳躍式的往前移動,這就使得在完成一輪迴圈,使得整個演算法堅定的朝著有序邁進。

具體**如下:

void shellsort (sqlist *l)}}

while(increment>1);

}

排序演算法之希爾排序

希爾排序實際上是一種分治思想的插入排序。插入排序不說了,不清楚看這裡 分治思想,對增量為dk,dk遞減,開始很多小序列,最後為乙個大序列 相對直接插入排序,在希爾排序中,只不過增量不是1,而是dk 較好的增量序列是2 k 1,2 k 1 1,7,3,1,這樣可使shell排序時間複雜度達到o n 1...

排序演算法之希爾排序

希爾排序 shell sort 又稱為縮小增量排序,輸入插入排序演算法,是對直接排序演算法的一種改進。本文介紹希爾排序演算法。對於插入排序演算法來說,如果原來的資料就是有序的,那麼資料就不需要移動,而插入排序演算法的效率主要消耗在資料的移動中。因此可知 如果資料的本身就是有序的或者本身基本有序,那麼...

排序演算法之希爾排序

希爾排序,突破了 通過交換相鄰元素進行排序的任何演算法平均需要 n 2 的二次時間限制 通過比較相距一定間隔的元素來工作。使用乙個增量序列 h1 1,h2,ht,在使用乙個 增量h的一趟排序後,對於每乙個i滿足pdata i pdata i h 即此時序列是h排序的 各趟 比較所用的距離逐漸減小,直...