希爾排序(ShellSort)

2021-08-22 16:24:53 字數 535 閱讀 4502

希爾排序是插入排序的一種

即我們要將乙個陣列分割成多個組,然後我們在這個區間內使用插入排序,插入排序我們在這裡就不做過多的介紹了

首先我們要知道這個組是怎麼劃分的,我們劃分區間首先就要定步長

第一次的步長gap=length/2

第二次步長  gap=gap/2

直到gap<1時結束

所以我們將乙個陣列分成了gap個組,然後我們在這個組中排序

注意:我們劃分的各中的元素是通過原陣列下標找到的

**如下:

#includevoid shellsort(int arr,int nlength)

//放入

arr[j+ngap] = temp;

}} }

}int main()

; shellsort(arr,sizeof(arr)/sizeof(arr[0]));

int i;

for(i = 0;iprintf("\n");

return 0;

}

希爾排序(Shell Sort)

希爾排序 shell sort 又叫做縮小增量排序 diminishing increment sort 是一種很優秀的排序法,演算法本身不難理解,也很容易實現,而且它的速度很快。基本思想 先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同乙個組中...

希爾排序 shellsort

希爾排序 shellsort 又叫增量遞減 diminishing increment 排序,是由d.l.shell發明的,這個演算法是通過乙個逐漸減小的增量使乙個陣列逐漸趨近於有序從而達到排序的目的。假設有乙個陣列int data 16 首先將這個增量設為16 2 8,這樣就將這個陣列分成了8個子...

希爾排序(ShellSort)

希爾排序 shellsort cpp view plain copy include shellsort.h include print.h 希爾排序,分組進行插入排序,最後一步仍然是插入排序,但是因為之前的操作使逆序數減少,所以相對單純的插入排序效率高。void shellsort inta,in...