JSによって実現されるカウント順序と基数並べ替えアルゴリズムの例


本論文の例は、JSによって実現されるカウント順序とベースの順序付けアルゴリズムについて述べる。皆さんに参考にしてあげます。具体的には以下の通りです。
カウント順序
カウント順序は単純な桶の並べ替えであり、1つの桶は配列の中の1つの数を表すので、配列の数字の範囲と同じ大きさの補助配列が必要です。一般的には100以下の範囲で並べ替えられます。時間の複雑さはO(n)で、空間の複雑さは配列の数ワードの範囲です。

/**
 *     start - end      
 *           ,                 ,          100   
 */
function countSort(arr, start, end) {
  var len = arr.length;
  //    
  var suportArr = new Array(end - start + 1);
  //     
  var resArr = new Array(len);
  //       
  for (i = 0; i < suportArr.length; i++) {
    suportArr[i] = 0;
  }
  //            ,       +1          +1 
  for (let i = 0; i < len; i++) {
    suportArr[arr[i]]++;
  }
   //   1   ,            ,                   。
  for (let i = 1; i < suportArr.length; i++) {
    suportArr[i] += suportArr[i - 1];
  }
  //          ,      
  for (let i = len - 1; i >= 0; i--) {
    resArr[suportArr[arr[i]] - 1] = arr[i];
    suportArr[arr[i]]--;
  }
  return resArr;
}

ベースの並べ替え
基数並べ替えは横になっているバケツの並べ替えです。

var radix = 16; //   ,      ,      ,      ,            。
function _roundSort(arr, round, radix) {
  var buckets = new Array(radix);
  for (let i = 0; i < radix; i++) {
    buckets[i] = [];
  }
  //               
  for (let i = 0; i < arr.length; i++) {
    let remainder = Math.floor(arr[i] / (radix ** (round - 1))) % radix;
    buckets[remainder].push(arr[i]);
  }
  //              
  var index = 0;
  for (let i = 0; i < buckets.length; i++) {
    for (let j = 0; j < buckets[i].length; j++) {
      arr[index++] = buckets[i][j];
    }
  }
}
function radixSort(arr, round) {
  for (let i = 1; i <= round; i++) {
    _roundSort(arr, i, radix);
  }
  return arr;
}
console.log(radixSort([10,5,5,50,0,155,4622,5,1,4,2154], 4));

PS:ここでは並べ替えに関するデモンストレーションを紹介します。
オンラインアニメーションのデモ挿入/選択/発泡/帰結/ヒル/高速ソートアルゴリズムプロセスツール:
http://tools.jb51.net/aideddesign/paixu_システム
もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「JavaScript数学演算の使い方のまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScript配列操作技術のまとめ」、「JavaScriptソートアルゴリズムのまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript検索アルゴリズムのテクニックのまとめ」および「JavaScriptエラーとデバッグテクニックのまとめ
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。