ENGINEER_GUIDANCE: ビンソート (Bucket Sort)
ビンソート(バケツソートとも呼ばれる)は、データをいくつかの範囲(ビン・バケツ)に振り分け、各バケツの中で個別にソートを行った後、すべてを連結するアルゴリズムです。
1. アルゴリズムの動作原理
- 分散 (Scatter): データの値に応じて、適切なバケツにデータを放り込みます。
- 局所ソート: それぞれのバケツの中で、データが少ない状態でソート(通常は挿入ソートなど)を行います。
- 結合 (Gather): バケツの順番通りにデータを取り出し、1つに統合します。
2. 計算量と実務での評価
データが各バケツに均等に分散される理想的な条件下では、なんとO(n)という驚異的な線形時間でソートが完了します。
ただし、「データの最大値・最小値があらかじめ分かっていること」「データが極端に偏っていないこと」という条件が揃わないと、1つのバケツにデータが集中してしまい、最悪計算量は O(n2) に悪化するデリケートなアルゴリズムです。
3. 活用シーン
0〜100点のテストの点数のソートや、浮動小数点数の分散データなど、値の範囲が限定的で分布が予測しやすい状況で非常に高いパフォーマンスを発揮します。