1. 程式人生 > 其它 >使用JavaScript實現希爾排序

使用JavaScript實現希爾排序

技術標籤:前端開發排序演算法

什麼是希爾排序?

希爾排序(Shell’s Sort)是插入排序的一種又稱“縮小增量排序”(Diminishing Increment Sort),是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因 D.L.Shell 於 1959 年提出而得名。

希爾排序基本思想

比較相隔較遠距離(稱為增量)的數,使得數移動時能跨過多個元素,則進行一次比較就可能消除多個元素交換。D.L.shell於1959年在以他名字命名的排序演算法中實現了這一思想。演算法先將要排序的一組數按某個增量d分成若干組,每組中記錄的下標相差d.對每組中全部元素進行排序,然後再用一個較小的增量對它進行,在每組中再進行排序。當增量減到1時,整個要排序的數被分成一組,排序完成。接下來是JS程式碼實現`

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //希爾排序演算法
    function shellSort
(arr){//希爾排序 var gaps=[5,3,1];//定義間隔區間 for(var g=0;g<gaps.length;g++){//一個一個間隔值開始 for(var i=gaps[g];i<arr.length;i++){//以間隔值遍歷 var temp=arr[i];//選中元素 for(var j=i;j>=gaps[g]&&arr[j-gaps[g]]>temp;j-=gaps[g]){//如果前面一個大於後面一個 arr[j]=arr[j-gaps[g]];//後移 }
arr[j]=temp;//填補 } } return arr } //生成隨機陣列 function random(){ var arr = [] for(var i = 0;i<20;i++){ var num = parseInt(Math.random()*100+10) arr.push(num) } return arr } var arr = random() console.log(arr) console.log(shellSort(arr))
</script> </head> <body> </body> </html>

以下是瀏覽器控制檯截圖
在這裡插入圖片描述