基本情報技術者 テクノロジ系

クイックソートの平均計算量として適切なものはどれか。

1. O(n)
2. O(n log n) ✓ 正解
3. O(n²)
4. O(log n)

📝 解説

クイックソートは「ピボット(基準値)を選び、ピボットより小さい要素と大きい要素の2グループに分割する」操作を再帰的に繰り返す分割統治法による整列アルゴリズムです。図書館で本を整理するとき「500番台を境に前後に分け、さらにそれぞれを250番と750番で分け…」と繰り返す方法がまさにクイックソートの発想です。平均的なケースでは毎回ほぼ均等に分割されるため、O(n log n)という非常に効率的な計算量を達成します。これはn件のデータをlog nの深さで分割し、各レベルでn回の処理が必要という構造によるものです。ただし最悪ケース(既にほぼ整列済みのデータで毎回最大・最小をピボットに選ぶと)はO(n2)に悪化します。ランダムなピボット選択や「3つの中央値」を選ぶ方法でこのリスクを低減できます。実用上はキャッシュ効率が高くインプレース(追加メモリが少ない)なため、多くの標準ライブラリで採用されています。誤答の「O(n)」はハッシュ探索や計数ソートなど特殊ケース、「O(n2)」はバブルソート・選択ソートの平均計算量、「O(log n)」は二分探索の計算量です。「クイックソート=平均O(n log n)・最悪O(n2)・分割統治法」と覚えましょう!

フラッシュカード形式で テクノロジ系 を練習する

🎴 練習する

テクノロジ系 の問題一覧・解説を見る →