JavaScript希爾排序簡單介紹

antzone發表於2018-06-02

本文介紹JavaScript中的希爾排序。

下面是一段程式碼例項,給出排序原理,程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function shellSort(list){
  var gap=Math.floor(list.length/2);
  while(gap>0){
    for(i=gap;i<list.length;i++){
      temp=list[i];
      for(j=i;j>=gap&&list[j-gap]>temp;j-=gap){
        list[j]=list[j-gap];
       }
       list[j]=temp;
     }
     gap=Math.floor( gap / 2 );
   }
   return list;
}
var theArray=[2,1,3,12,5,66,23,87,15,32];
console.log(shellSort(theArray));

實現原理:

先取一個小於n的整數d1作為第一個增量,把檔案的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同一個組中。先在各組內進行直接插入排序;然後,取第二個增量d2<d1重複上述的分組和排序,直至所取的增量dt=1(dt < dt-l< … < d2 < d1),即所有記錄放在同一組中進行直接插入排序為止。

相關文章