首頁 > web前端 > js教程 > JS希爾演算法的排序詳解

JS希爾演算法的排序詳解

小云云
發布: 2018-03-07 10:45:52
原創
1275 人瀏覽過

希爾演算法在原理上也是一種插入排序,在了解希爾演算法之前,必須先了解插入排序;前面我們和大家分享了JS插入排序詳解,希望本文能幫助大家。

原理:
希爾排序在插入排序的基礎上,將資料進行了分組,將原有的資料分成若干個子集,然後對每個子集進行排序,依次類推,不停地分割成子集,直到最後完全排序。

數列:[3,5,2,4,7,6,8,9,1]
先將整個數列以gap為基準分割為子集,對子集進行排序; (gap 一般為Math.floor(arr.length/2))
gap:4
分割後的子集為:3,7 ,1       5,6         2,8        #子集排序後:1,3,7        5,6     2,8      4,9
數列為:[1,5,2,4,3,6,8,9,7]

修改gap的值再進行排序 

gap:2
……..
直到gap的值為0則停止

JS程式碼實作:

var arr=[3,5,2,4,7,6,8,9,1];var gap=Math.floor(arr.length/2);       
while(gap>0){    for(var i=gap;i<arr.length;i++){        var temp=arr[i];        var j=i-gap;        while(j>=0&&arr[j]>temp){
            arr[j+gap]=arr[j];
            arr[j]=temp;
            j-=gap;
        }
        arr[j+gap]=temp;
        }
    gap=Math.floor(gap/2); 
}

输出结果: [1, 2, 3, 4, 5, 6, 7, 8, 9]
登入後複製

相關推薦:


JS插入排序詳解

#JavaScript基本上常用排序演算法的實例解析

javascript數組去重和快速排序演算法實例詳解

以上是JS希爾演算法的排序詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板