バーストソート

バーストソート
クラスソートアルゴリズム
データ構造トライ
最悪のパフォーマンス自分の)
最悪の場合の空間複雑度自分の)
最適?

バーストソートとその派生は、文字列をソートするためのキャッシュ効率の高いアルゴリズムです。従来の基数ソートの派生ですが、一般的な文字列の大規模なデータセットに対してより高速です。2003年に初めて公開され、その後、最適化されたバージョンもいくつか公開されました。[ 1 ]

バーストソートアルゴリズムは、文字列のプレフィックスをトライ木に格納し、ソートされた一意のサフィックス(バケットと呼ばれる)を含むポインタの拡張可能な配列をエンドノードとして使います。いくつかのバリエーションでは、文字列の末尾をバケットにコピーします。バケットが所定のしきい値を超えると、バケットはトライに「バースト」するため、このソートは「バースト」と呼ばれます。より新しいバリエーションでは、メモリ使用量を削減するために、より小さなサブバケットを持つバケットインデックスが使用されています。ほとんどの実装では、バケットの内容をソートするために、3元基数クイックソートの拡張であるマルチキークイックソートが使用されています。入力を共通のプレフィックスを持つバケットに分割することで、キャッシュ効率の高い方法でソートを行うことができます。

バーストソートは、 MSD基数ソート[ 1 ]に似たソートとして導入されましたが、キャッシュを考慮し、トライ構造の特性により関連する基数が互いに近い位置に格納されるため、より高速です。これは、実世界でよく見られる文字列の特性を利用します。漸近的には基数ソートと同じで、時間計算量はO ( wn )wはワード長、nはソート対象の文字列数)ですが、メモリ分散が優れているため、大規模な文字列データセットでは2倍の速度になります。これは「大規模な文字列セットをソートする最も高速なアルゴリズム」と謳われています。[ 2 ]

参考文献