希爾排序也屬於插入類排序演算法。希爾排序通過縮小增量,將待排序元素劃分為若干個子串行,分別對各個子串行按照直接按照插入排序演算法進行排序。當增量為1時,待排序元素構成乙個子串行,對該序列排序完畢後希爾排序演算法結束。
**如下:
#include
void shellsort(int a, int
length, int delta, int
m);void shellinsert(int a, int
length, int c);
void disparray(int a, int
length);
int main()
; int delta = , m = 3, length = sizeof(a) / sizeof(a[0]);
shellsort(a, length, delta, m);
printf("result:");
disparray(a, length);
return0;}
void shellsort(int a, int
length, int delta, intm)}
void shellinsert(int a, int
length, int c)
a[j + c] = t;}}
}void disparray(int a, int
length)
printf("\n");
}
結果如下:
插入排序之希爾排序
直接插入排序與希爾排序相比還是有一些問題的。結論 當需要插入的數是比較小的數時,後移的次數明顯增多,對效率有影響。1 交換法 test public void testsort long start system.currenttimemillis bubblesorting array 氣泡排序排...
插入排序 希爾插入排序
本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...
插入排序 希爾排序
我們知道當乙個序列基本有序時,直接插入會變得很高效。因為此時只需少量的移動元素,操作集中在元素的比較上。基於這種想法,我們就試圖把乙個序列在進行直接插入前調整得盡量有序。這就是希爾排序 shell sort 的核心思路。shell只是演算法發明者的名字,無特殊含義 那到底該怎麼做呢?希爾排序一反以前...