Developer Toolbox

ヒープソート

リストをヒープに組み替えます。ヒープとは、どの親も子より大きい木のことです。そのあと、最大値を末尾へ移すことを繰り返します。

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(1)
  • いいえ
  • はい
  • 比較中
  • 移動中
  • 位置が確定
0 / 299 ステップ
比較回数 入れ替え回数

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

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

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

試してみましょう: 逆順のリストを選んでください。ヒープ作りでは入れ替えがほとんどなく、そのあと毎回最大値が末尾へ移ります。

仕組み

ヒープはリストの中にそのまま入っています。位置 i の値の子は、位置 2i+1 と 2i+2 にあります。最大値はいつも先頭です。それを末尾と入れ替え、ヒープを1つ小さくしてから直します。並べ終えた部分は右から増えていきます。

向いている場面

最悪の場合でも速さが落ちず、追加のメモリも使えないときに向いています。小さな機器などがその例です。平均するとクイックソートより遅いので、安全策として使われることが多い方法です。