1. 程式人生 > >排序算法——希爾排序

排序算法——希爾排序

應該 gap code 縮小 直接插入排序 color shells int 穩定

希爾排序

  希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序算法的一種更高效的改進版本。希爾排序是非穩定排序算法。

  該方法因DL.Shell於1959年提出而得名。

  希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序算法排序;隨著增量逐漸減少,每組包含的關鍵詞越來越多,

  當增量減至1時,整個文件恰被分成一組,算法便終止。


代碼實現

void shellsort(int a[],int n)
{
    int gap=0,i=0,temp=0,j=0;
    for(gap=n/2;gap>0;gap /= 2)
    {
        
for(i=gap;i<n;i++)//以數組下標為gap開始 { if(a[i]<a[i-gap])//分成的每個小組,組內比較 { temp = a[i]; j = i-gap; while(j>=0 && a[j]>temp)//尋找a[j]應該插入的位置,並且將比a[j]大的數據往後移 { a[j+gap] = a[j]; j
-= gap; } a[j+gap] = temp; } } } }

  

排序算法——希爾排序