[JavaScriptを] ---ヒルソートアルゴリズム(再生自己教師Alley-路地)

まず、ソートヒルは何ですか

ソートヒル(シェルの並べ替え)され 、ソートに挿入 と呼ばれる一つの「狭いインクリメントソート、」アンアルゴリズムは、より効率的な改良版に直接挿入されます。
 
アイデア:
     シェルソート単位で記録パケットを押すの主題である、直接挿入ソートの使用は、各ソートアルゴリズムは、増加とともに徐々に減少し、より多くのキーワードをそれぞれ含む、増分に減少したときに、ファイル全体がひとつのセットに分割され、アルゴリズムが終了されます
 
ロジック:
    シェルで並べ替え、我々は最初にこれらの数字はグループ予選定期的に、ギャップを見つけ、最も重要なグループであります
    ほぼすべての5群として;配列[9,1,2,5,7,4,8,6,3,5]を考えます。この配列は、その後、我々は次のグループに分かれています
    グループI:94
    グループII:18
    グループIII:26
    グループIV:53
    第5群:75
    
    パケットが終了した後、私たちは一種のグループごとに設定します  
 
    グループI:49
    グループII:18
    26の第三の組
    第四群35
    第5群57
 
    我々は、ソートされたリオーダリング間隔を再設計しますアレイ2のグループのための(時間間隔が半分になります)
    [4,1,2,3,5,9,8,6,5,7]
    
     最初のセット:42585 ==「注文は24558を設定しました
     第二セット:13967 ==「注文は13679を設定しました
     
    2 1 4 3 5 6 7 8 9 5
    
 
    ご注文後、私たちは、アレイ間隔リオーダー(次の間隔を半分に)対比較であるグループに1つの最後の時間を再設計します
    
    1 2 3 4 5 6 7 8 9
    
 
注意:ヒル発注間隔は、一般的に、特に定義されていないが、通常は配列の長さの半分
 
 
第二に、コード
コードをコピー
VAR ARR = [2,5,1,9,0] 
//算间隔
VAR LEN = Math.floor(arr.length / 2)
(> 0 LEN)しながら{ 
    (VAR I = LENため、I <arr.length ; Iは{++)
        VARの一時=のARR [I]。
        {(J = J-LEN; J> = 0 && TEMP <ARR [J]のvar J = I-LEN)のための
            ARR [J + LEN] = ARR [J] 
        } 
        [J + LEN] ARR = TEMP。
    } 
    でlen = Math.floor(LEN / 2)
}
コードをコピー

 

おすすめ

転載: www.cnblogs.com/mp-0518/p/11440541.html
おすすめ