はじめに
この実験では、JavaScript でバケットソートアルゴリズムを調べます。バケットソートは、配列の要素を複数のバケットに分散させることで動作するソートアルゴリズムです。次に、それぞれのバケットを、別のソートアルゴリズムを使って、または再帰的にバケットソートアルゴリズムを適用することで個別にソートします。この実験では、このアルゴリズムを実装し、その動作原理を深く理解する機会を提供します。
バケットソートアルゴリズム
バケットソートアルゴリズムを使って数値の配列をソートするには、次の手順に従います。
- ターミナル/SSH を開き、コーディングを練習するために
nodeと入力します。 Math.min()、Math.max()および展開演算子 (...) を使って、与えられた配列の最小値と最大値を見つけます。Array.from()とMath.floor()を使って、適切な数のバケット(空の配列)を作成します。Array.prototype.forEach()を使って、配列から適切な要素を各バケットに格納します。Array.prototype.reduce()、展開演算子 (...) およびArray.prototype.sort()を使って、各バケットをソートして結果に追加します。
次に、JavaScript でのバケットソートアルゴリズムの例の実装を示します。
const bucketSort = (arr, size = 5) => {
const min = Math.min(...arr);
const max = Math.max(...arr);
const buckets = Array.from(
{ length: Math.floor((max - min) / size) + 1 },
() => []
);
arr.forEach((val) => {
buckets[Math.floor((val - min) / size)].push(val);
});
return buckets.reduce((acc, b) => [...acc, ...b.sort((a, b) => a - b)], []);
};
アルゴリズムをテストするには、次のコードを実行します。
bucketSort([6, 3, 4, 1]); // [1, 3, 4, 6]
まとめ
おめでとうございます!あなたはバケットソートの実験を完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を練習することができます。