ソート / Merge Sort(マージソート)

分けて並べて、
最後にまとめる。

大きい問題を半分ずつの小さい問題に分けて進める方法です。半分ずつ整列して、最後に 2 つの整列済み配列をまとめます。

安定ソート半分ずつ解くO(n log n)

目次

このページの目次

このページでわかること

先に知っておくポイント

1. 半分に分かれる様子
2. まとめるときに何を比べるか
3. 作業用の配列が必要な点

概要

概要

大きい問題を半分ずつの小さい問題に分けて進める方法です。半分ずつ整列して、最後に 2 つの整列済み配列をまとめます。

考え方

擬似コード

配列を半分ずつに分ける
左半分を整列する
右半分を整列する
2つの整列済み配列をまとめる

要点

要点まとめ

最良時計算量

O(n log n)

平均時計算量

O(n log n)

最悪時計算量

O(n log n)

安定ソートか

はい

補足

向いている場面と注意点

なぜ速いか

各段で全体を一度見て、半分に分ける段がそれほど多くないからです。

注意点

配列版では作業用のメモが必要です。

教え方

分ける流れと、最後にまとめる流れを分けて見せると整理しやすいです。

動きで確認

動きを見てたしかめる

ここでは「半分に分かれる様子」を見ながら、上で読んだ内容を動きと結びつけます。

注目重要候補確定

次に見る

次に見るページ

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