插入排序之希爾排序

2021-08-10 13:40:21 字數 842 閱讀 8121

希爾排序也屬於插入類排序演算法。希爾排序通過縮小增量,將待排序元素劃分為若干個子串行,分別對各個子串行按照直接按照插入排序演算法進行排序。當增量為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只是演算法發明者的名字,無特殊含義 那到底該怎麼做呢?希爾排序一反以前...