ソート / Heap Sort(ヒープソート)

ヒープから最大値を
順に取り出す。

二分ヒープを使って最大値を何度も末尾へ送ります。比較的安定した O(n log n) ですが、安定ソートではありません。

O(n log n)in-placeヒープ構造を利用

目次

このページの目次

このページでわかること

先に知っておくポイント

1. 完全二分木として考える
2. 親子の大小関係を見る
3. 根を末尾と交換する流れ

概要

概要

二分ヒープを使って最大値を何度も末尾へ送ります。比較的安定した O(n log n) ですが、安定ソートではありません。

考え方

擬似コード

build max heap
swap root with last element
shrink heap
heapify root

要点

要点まとめ

最良時計算量

O(n log n)

平均時計算量

O(n log n)

最悪時計算量

O(n log n)

安定ソートか

いいえ

補足

向いている場面と注意点

流れ

まずヒープを作り、その後 root を取り出して再ヒープ化します。

見せ方

木と配列の対応を並べると理解しやすいです。

特徴

最悪時も O(n log n) を保ちます。

動きで確認

動きを見てたしかめる

ここでは「完全二分木として考える」を見ながら、上で読んだ内容を動きと結びつけます。

注目重要候補確定

次に見る

次に見るページ

比較すると違いがわかりやすいページを先に置いています。