問題

クイックソートに関する記述のうち、適切なものはどれか。

ア)クイックソートの平均計算時間は O(n²) であり、常に安定な整列を行う。

イ)クイックソートは、ピボットの選び方によっては最悪計算時間が O(n²) になることがある。

ウ)クイックソートはマージソートと異なり、追加のメモリ領域を一切必要としない。

エ)クイックソートの最悪計算時間は、常に O(n log n) に抑えられる。

解答・解説を見る

正解: イ)

解説:

  • ア)クイックソートの平均計算時間は O(n log n) です。また安定ソートではありません(同じキー値の要素の順序が入れ替わることがある)。誤りです。
  • イ)ピボットの選択が偏る(例えば常に最大・最小値を選んでしまう)と、分割が均等にならず最悪計算時間は O(n²) になります。正解です。
  • ウ)クイックソートも再帰呼び出しのためのスタック領域を使用します。「一切必要としない」は誤りです。
  • エ)上記の通り最悪計算時間は O(n²) になり得るため、常に O(n log n) に抑えられるという記述は誤りです。

重要キーワード

用語説明
ピボットクイックソートで分割の基準に使う要素
平均計算時間O(n log n)。ランダムなデータでの期待性能
最悪計算時間O(n²)。ピボット選択が偏った場合に発生
安定ソート同じキー値の要素の相対順序が保たれる整列