英数字フィールドをソートする最良/最速の方法は何ですか?
6 に答える
ターゲット言語を指定しませんが、それが何であれ、信頼できる組み込みの並べ替えメソッドが必要なので、それらのいずれかを使用してください! PHPの場合...
配列にロードして sort($array);
PHPソート...
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val)
{
echo "fruits[" . $key . "] = " . $val . "\n";
}
出力:
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
あなたの質問への答えは、あなたが提供していないいくつかの詳細に密接に関連しています。「最良/最速」の方法は、フィールドの長さ、ソートする必要があるフィールドの数、使用可能なメモリの量、ディスクとメモリの相対速度、文字列の内容の詳細などによって異なります。吐き気。
Knuth Vol 3 には、さまざまなアプローチの詳細が記載されています。彼が基数ソートについて話し合ったかどうかは覚えていませんが、おそらく話しているでしょう。そうでない場合は、Radix Sorting に関する参考文献を調べてください。限られた状況でのみ役に立ちますが、積極的に飛びます。短い文字列の小さなセットがある場合、バブル ソートはオーバーヘッドが少ないため、一部のアーキテクチャでは複雑なソートよりも優れたパフォーマンスを発揮します。C ランタイム ライブラリには Quick Sort のバージョンが含まれています。これは、状況によっては、大規模なデータ セットに対して非常に効率的なアルゴリズムになる可能性があるためです。
ネットネット、答えは「場合による」です。
「最良の」方法は、多くの要因に依存します。
- 言語以上のサポートが必要ですか?
- 同時に複数の言語をサポートする必要がありますか?
- 現在のオペレーティング システムまたはユーザー言語以外の言語をサポートする必要がありますか? (例: Web アプリケーション)
- 複数のエンコーディングをサポートする必要がありますか? (Unicode、utf-16le/utf-8、ansi コード ページなど)
- 長い入力や冗長性の高い入力をサポートする必要がありますか? (事前計算または圧縮によりソート操作が高速化される場合があります)
- 多数の入力をサポートする必要がありますか? 例: 100 万または 10 億の入力?
ほとんどの開発ライブラリには、多くの場合最速のソート アルゴリズムであるクイックソート アルゴリズムが実装されています。こちらのウィキペディアのリンクをご覧ください。