ソートアルゴリズム比較 — 時間、空間、安定性
すべての主要ソートアルゴリズムを並べて比較:時間計算量(最良、平均、最悪)、空間計算量、安定性、それぞれの使用場面。
Algorithms
詳細な説明
包括的なソートアルゴリズム比較
完全な比較表
| アルゴリズム | 最良 | 平均 | 最悪 | 空間 | 安定? |
|---|---|---|---|---|---|
| バブルソート | O(n) | O(n²) | O(n²) | O(1) | Yes |
| 選択ソート | O(n²) | O(n²) | O(n²) | O(1) | No |
| 挿入ソート | O(n) | O(n²) | O(n²) | O(1) | Yes |
| マージソート | O(n log n) | O(n log n) | O(n log n) | O(n) | Yes |
| クイックソート | O(n log n) | O(n log n) | O(n²) | O(log n) | No |
| ヒープソート | O(n log n) | O(n log n) | O(n log n) | O(1) | No |
| Tim sort | O(n) | O(n log n) | O(n log n) | O(n) | Yes |
いつ何を使うか
小さな配列 (n < 50): 挿入ソート。オーバーヘッドが低く、キャッシュ効率が良い。
汎用: Tim sort(PythonとJavaのデフォルト)。適応的、安定、最悪O(n log n)。
メモリ制約: ヒープソート。インプレースでO(n log n)保証。
小範囲の整数: カウンティングソートまたは基数ソート。
安定性
安定ソートは等しい要素の相対的な順序を保持します。複数キーでソートする場合に重要です。
ユースケース
ソートアルゴリズムの選択はソフトウェアエンジニアリングにおける基本的な決定です。本番コードのソート選択、面接準備、ライブラリソート実装のパフォーマンス特性分析にこの比較を活用してください。