Developer Toolbox

クイックソート

値を1つ選び(これをピボットと呼びます)、小さい値をその左へ、大きい値を右へ動かします。そのあと左右それぞれで同じことをします。

  • Ω(n log n)
  • Θ(n log n)
  • O(n²)
  • O(log n)
  • いいえ
  • はい
  • 比較中
  • 移動中
  • ピボット
  • 位置が確定
0 / 187 ステップ

再帰の深さ: 0 · 最小: 4 · 最悪: 23 ピボット待ち

比較回数 入れ替え回数

再生を押すと、並べ替えが進むにつれてコストが増える様子を線で表示します

再生を押すか、1ステップずつ進めてください。

スペースキー: 再生・一時停止。左右の矢印キー: ステップ移動。Home キーと End キー: ジャンプ。

試してみましょう: 逆順のリストを選んでください。ピボットがいつも残りの最小値か最大値になるので、分けるたびに片側が空になり、コストが n² に近づきます。

仕組み

ここではピボットを範囲の最後の値にします。左から右へ見ていき、ピボット以下の値を左側へ入れ替えます。最後にピボットを2つのグループの間に置くと、その位置は確定です。左右のグループも同じ方法で並べ替えます。

向いている場面

実際に最も速い並べ替え方法の1つで、追加のメモリもほとんど要りません。ただし悪いピボットばかり選ぶと遅くなります。最初から並んでいるリストがその例です。実際の実装では、ピボットをもっと慎重に選びます。