データを整列させるアルゴリズム
基本交換法(バブルソート)
隣接するデータの代償を比較し、入れ替えることで全体を整列させる。
4213 先頭二つを比較
↓
2413 先頭二つを入れ替え
↓
2143 入れ替えたうちの右側と隣接する数字を入れ替え
↓
2134 上記と同じ処理を行う(右端はこれ以上数字がないのでこれで確定)
↓
2134 先頭二つを比較
↓
1234 先頭二つを入れ替え
↓
1234 入れ替えた数字を比較した際に右側が大きいのでこれで確定
基本選択法(選択ソート)
データの中から最小値もしくは最大値のデータを取り出し、先頭のデータと交換する。これを繰り返し全体を整列させる。
4213 対象の中から最小値を見つける
↓
1243 最小値と先頭のデータを入れ替え
↓
1243 先頭が確定
↓
1243 残りのデータから最小値を探す
↓
1243 今回は2が最小値だが入れ替えはなし(2が確定)
↓
1243 残りのデータから最小値を探す
↓
1234 最小値と先頭データを入れ替え
基本挿入法(挿入ソート)
整列済みのデータとみ整列のデータを分ける
未整列の側からデータを一つずつ整列済みの列の適切な位置に挿入し、全体を整列させる
4_213 先頭を整列済みとする
↓
4_213 未整列の数字(今回は2)をどこに挿入するか考える
↓
24_13 未整列の数字(今回は2)を挿入する
↓
24_13 次の未整列の数字(今回は1)をどこに挿入するか考える
↓
124_3 未整列の数字(今回は1)を挿入する
↓
124_3 未整列の数字(今回は3)をどこに挿入するか考える
↓
1234_ 未整列の数字(今回は3)を挿入する
## シェルソート
一定間隔沖に取り出した要素で部分列を作り、それぞれ整列して元に戻す
今度はさらに間隔を詰めて要素を取り出し、再度整列。
これを間隔が1になるまで繰り返す。
14725836 要素を四つおきに取り出す
↓
15_48_73_26 取り出した結果
↓
15_48_37_26 整列
↓
15483726 一つに戻す
↓
1432_5876 二つおきに取り出す
↓
1342_5786 整列
クイックソート
中間的な基準値を決め、それより小さいグループ、それより大きいグループに分ける
その後、それぞれのグループでまた基準値を決めて振り分ける、これを繰り返す
14725836 基準値を決める
123_4_7586 基準値をベースに小さいグループと大きいグループに分け、基準値ごとに分ける
1_2_3_4_5_6_78 基準値をベースに小さいグループと大きいグループに分ける
1_2_3_4_5_6_7_8 上記の手順を繰り返す
ヒープソート
未整列の部分を順序木という木構造に構成し、最大値か最小値を取り出し手整列済みの側へと移す
これを繰り返す整列