排序演算法之Shell排序(希爾排序)

2021-08-08 23:41:58 字數 427 閱讀 8084

shell排序

思想:先可進行分組,再利用插入排序。分組的方法是根據步長的設定從a[0]開始,並且不大於步長,組內相鄰兩個元素的邏輯距離是gap。分組結束的標誌是gap為0,也就是已經全部按照大小排列。

推薦閱讀:

//給定陣列shell排序,從小到大排列。

#include int main()

; gap=10/2;

while(gap>0)

a[k]=t;

j+=gap;

}gap/=2;}}

printf("\nthesorted numbers are:\n");

for(i=0;i<10;i++)

printf("\n\nend\n");

}

常見排序演算法 希爾(shell)排序

原理 一般,講序列分成n 2組,然後進行排序,後再分為 n 2 2組,再進行排序,以此類推。例子 63 92 27 36 45 71 58 7 分組1次 63 9227 36 45 7158 7 排序 45 7127 7 63 9258 36 分組2次 45 71 27 7 63 92 58 36 ...

006 排序演算法 希爾排序

一 概述 希爾排序 shell s sort 是插入排序的一種又稱 縮小增量排序 diminishing increment sort 是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因d.l.shell於1959年提出而得名。排序方法 時間複雜度 平均 時間複雜度 最...

排序演算法之希爾排序

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