ヒープソート
読み:ヒープソート
外語:heap sort
ヒープを利用したソート。最悪計算量はO(n log n)。
数列の並び方がどのようであっても、安定した処理時間を持つ。
ヒープソートの手順
1. ソートを始める前に配列をヒープ化する
87
│
┌───┴───┐
│ │
59 67
│ │
┌─┴─┐ ┌─┴─┐
│ │ │ │
50 38 54 29
│ │ │
┌┴┐ ┌┴┐ ┌┘
│ │ │ │ │
43 35 15 11 8
2. 一番最初の節点(87)と一番最後の節点(8)の値を入れ替え, 一番最後
の節点の値はソート済みとする
8
│
┌───┴───┐
│ │
59 67
│ │
┌─┴─┐ ┌─┴─┐
│ │ │ │
50 38 54 29
│ │
┌┴┐ ┌┴┐
│ │ │ │
43 35 15 11 87
3. 木全体を再びヒープ化する
67
│
┌───┴───┐
│ │
59 54
│ │
┌─┴─┐ ┌─┴─┐
│ │ │ │
50 38 8 29
│ │
┌┴┐ ┌┴┐
│ │ │ │
43 35 15 11 87
4. 2.に戻る. 以下すべての節点がソート済みになるまで続ける.
11
│
┌───┴───┐
│ │
59 54
│ │
┌─┴─┐ ┌─┴─┐
│ │ │ │
50 38 8 29
│ │
┌┴┐ ┌┘
│ │ │
43 35 15 67 87
再検索