希爾排序C語言版
阿新 • • 發佈:2018-12-18
希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本.
希爾排序的基本思想就是:將需要排序的序列劃分為若干個較小的序列,對這些序列進行直接插入排序,通過這樣的操作可使需要排序的數列基本有序,最後再使用一次直接插入排序。
在希爾排序中首先要解決的是怎樣劃分序列,對於子序列的構成不是簡單地分段,而是採取將相隔某個增量的資料組成一個序列。一般選擇增量的規則是:取上一個增量的一半作為此次子序列劃分的增量,一般初始值元素的總數量。
/* *希爾排序 陣列,長度 */ void shell_sort(int *arr,int length) { int temp; int j; for(int d = (length/3) + 1;d >= 1;d =d/2) { for(int i = d;i < length; ++i) { temp=arr[i]; for(j = i-d; j >= 0 && temp < arr[j]; j = j-d) { arr[j+d]= arr[j]; } arr[j+d] = temp; } } }