希爾演算法在原理上也是一種插入排序,在了解希爾演算法之前,必須先了解插入排序;前面我們和大家分享了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:2
……..
直到gap的值為0則停止
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希爾演算法的排序詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!