markdown
ソートの基本
lecture/information/algorithm/foundation/ソートの基本-講義.n.md
ソートの基本
algorithmfoundationundergraduatelecture
導入
この講義で最重要なのは、ソートを「小さい順に並べる作業」でなく、順序の情報を作る操作として見ることです。
探索や二分探索が効率的に働くのは、ソートで順序が作られているからです。この講義では、ソート自体の細かい実装より、何を比較し、どう並べ替えているかを整理します。
用語と定義
ソート とは、要素列をある規則にしたがって整列することです。
方針
まず比較を何回するかを見ます。そのあと、要素を入れ替えるのか、分けてから戻すのかという動かし方を見ます。
直感的な説明
ソートは、散らばった本を本棚の順番に並べ直すようなものです。近くの 2 冊を少しずつ入れ替える方法もあれば、大きく 2 組に分けてから整える方法もあります。
厳密な説明
1. 基本の比較
要素が n 個あるとき、単純な比較ベースのソートでは O(n^2) の回数だけ比較するものが多いです。
2. 分割統治
マージソートのように、列を半分へ分けてそれぞれをソートし、最後に併合する方法では O(n\log n) が目安になります。
3. ソートで得られるもの
ソート済みになると、最小値・最大値・重複の確認・二分探索など、多くの処理が簡単になります。
見分け方
- 順序があると後続の処理が楽になるなら、まずソートを疑います。
- 入力が大きいなら O(n^2) か O(n\log n) かを意識します。
最終形
\boxed{\text{sort = 順序情報を作る前処理}}
一言でいうと
- ソートは並べ替え作業そのものより、その後の処理を簡単にするための基盤です。