排序算法——希爾排序
阿新 • • 發佈:2017-08-06
應該 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; } } } }
排序算法——希爾排序