整列アルゴリズム例 |
昇順 |
降順 |
選んで並べる (昇順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
先頭から全組合わせで比較、短い鉛筆を探す |
先頭の鉛筆 |
[2][5][3][8][7] |
- [2][5]を比較 → 交換しない
- [2][3]を比較 → 交換しない
- [2][8]を比較 → 交換しない
- [2][7]を比較 → 交換しない
|
2番目の鉛筆 |
[2][5][3][8][7]
[2][3][5][8][7] |
- [5][3]を比較 → 交換
- [3][8]を比較 → 交換しない
- [3][7]を比較 → 交換しない
|
3番目の鉛筆 |
[2][3][5][8][7] |
- [5][8]を比較 → 交換しない
- [5][7]を比較 → 交換しない
|
4番目の鉛筆 |
[2][3][5][8][7]
[2][3][5][7][8] |
- [8][7]を比較 → 交換
|
|
[2][3][5][7][8] |
並び替え終わり |
|
選んで並べる (降順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
先頭から全組合わせで比較、長い鉛筆を探す |
先頭の鉛筆 |
[2][5][3][8][7]
[5][2][3][8][7]
[8][2][3][5][7] |
- [2][5]を比較 → 交換
- [5][3]を比較 → 交換しない
- [5][8]を比較 → 交換
- [8][7]を比較 → 交換しない
|
2番目の鉛筆 |
[8][2][3][5][7]
[8][3][2][5][7] [8][5][2][3][7] [8][7][2][3][5] |
- [2][3]を比較 → 交換
- [3][5]を比較 → 交換
- [5][7]を比較 → 交換
|
3番目の鉛筆 |
[8][7][2][3][5]
[8][7][3][2][5]
[8][7][5][2][3] |
- [2][3]を比較 → 交換
- [3][5]を比較 → 交換
|
4番目の鉛筆 |
[8][7][5][2][3]
[8][7][5][3][2] |
- [2][3]を比較 → 交換
|
|
[8][7][5][3][2] |
並び替え終わり |
|
探して並べる (昇順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
先頭よりの隣と比較、短い鉛筆を先頭よりに |
2番目の鉛筆 |
[2][5][3][8][7] |
- [2][5]を比較 → 交換しない
|
3番目の鉛筆 |
[2][5][3][8][7]
[2][3][5][8][7] |
- [5][3]を比較 → 交換
- [2][3]を比較 → 交換しない
|
4番目の鉛筆 |
[2][3][5][8][7] |
- [5][8]を比較 → 交換しない
- [3][8]を比較 → 交換しない
- [2][8]を比較 → 交換しない
|
5番目の鉛筆 |
[2][3][5][8][7]
[2][3][5][7][8]
|
- [8][7]を比較 → 交換
- [5][7]を比較 → 交換しない
- [3][7]を比較 → 交換しない
- [2][7]を比較 → 交換しない
|
|
[2][3][5][7][8] |
並び替え終わり |
|
探して並べる (降順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
先頭よりの隣と比較、長い鉛筆を先頭よりに |
2番目の鉛筆 |
[2][5][3][8][7]
[5][2][3][8][7] |
- [2][5]を比較 → 交換
|
3番目の鉛筆 |
[5][2][3][8][7]
[5][3][2][8][7] |
- [2][3]を比較 → 交換
- [5][3]を比較 → 交換しない
|
4番目の鉛筆 |
[5][3][2][8][7]
[5][3][8][2][7]
[5][8][3][2][7]
[8][5][3][2][7] |
- [2][8]を比較 → 交換
- [3][8]を比較 → 交換
- [5][8]を比較 → 交換
|
5番目の鉛筆 |
[8][5][3][2][7]
[8][5][3][7][2]
[8][5][7][3][2]
[8][7][5][3][2]
|
- [2][7]を比較 → 交換
- [3][7]を比較 → 交換
- [5][7]を比較 → 交換
- [8][7]を比較 → 交換しない
|
|
[8][7][5][3][2] |
並び替え終わり |
|
分けて並べる (昇順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
枢軸(ピボット)を末尾とする
左から枢軸より≦長い鉛筆を探す
右から枢軸より>短い鉛筆を探す |
[7][8] |
[2][5][3][8][7]
[2][5][3][8][7]
[2][5][3]|[7]|[8]
[2][5][3] |
- [2][5][3][8]各順に[7]と比較
[7]≦[8]→[8]が該当
- [8][3][5][2]各(逆)順に[7]と比較
[7]>[3]→[3]が該当
- [3][8]が交差→探索修了
- [8]と枢軸[7]交換
- [7]で分割
- 分割された[7][8]は要素1→確定
|
[7][8]
[2][3][5][7][8] |
[2][5][3]
[2][5][3]
[2][5][3]
[2][3][5]
[2]|[3]|[5] |
- [2][5]各順に[3]と比較
[3]≦[5]→[5]が該当
- [5][2]各(逆)順に[3]と比較
[3]>[2]→[2]が該当
- [2][5]が交差→探索修了
- [5]と枢軸[3]交換
- [3]で分割
- 分割された[2][3][5]は要素1→確定
|
[2][3][5][7][8] |
|
並び替え終わり |
|
分けて並べる (降順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
枢軸(ピボット)を末尾とする
左から枢軸より>短い鉛筆を探す
右から枢軸より≦長い鉛筆を探す |
|
[2][5][3][8][7]
[2][5][3][8][7]
[8][5][3][2][7] |
- [2][5][3][8]各順に[7]と比較
[7]>[2]→[2]が該当
- [8][3][5][2]各(逆)順に[7]と比較
[7]≦[8]→[8]が該当
- [2][8]交換
|
[8][7] |
[8][5][3][2][7]
[8][5][3][2][7]
[8][7][3][2][5]
[8]|[7]|[3][2][5]
[3][2][5] |
- [8][5][3][2]各順に[7]と比較
[7]>[5]→[5]が該当
- [2][3][5][8]各(逆)順に[7]と比較
[7]≦[8]→[8]が該当するが
- [8][5]が交差→探索修了
- [5]と枢軸[7]交換
- [7]で分割
- 分割された[8][7]は要素1→確定
|
[8][7]
[8][7][5] |
[3][2][5]
[5][2][3]
[5]|[2][3]
[2][3] |
- [3][2]各順に[5]と比較
[5]>[3]→[3]が該当
- [3][2]各(逆)順に[5]と比較
[5]≦[要素]無く
該当なし→探索修了
- [3]と枢軸[5]交換
- [5]で分割
- 分割された[5]は要素1→確定
|
[8][7][5]
[8][7][5][3][2] |
[2][3]
[3][2] |
- [2]と[3]比較
[3]>[2]→[2]が該当
- [2]と[3]と比較
[3]≦[要素]無く
該当なし→探索修了
- [2]と枢軸[3]交換
- [3]で分割
- 分割された[3][2]は要素1→確定
|
[8][7][5][3][2] |
|
並び替え終わり |
|
|
交ぜて並べる (昇順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
分割し短い順に配列
分割群を比較、短い鉛筆から新配列 |
|
[2][5] |
[3][8][7] |
- 配列を分割する
|
|
|
[3] |
[8][7] |
- 必要なら更に小さい群に分割する
|
|
[3] |
[7][8] |
- 各分割列の鉛筆を短い順にする
|
[3] |
[3] |
[7][8] |
- 配列の先頭から短い方を取り出して新しい配列を作成する
|
[3][7][8] |
|
[7][8] |
- 残りはそのまま新しい配列の後に並べる
|
|
[2][5] |
[3][7][8] |
- 各分割列の鉛筆を短い順にする
|
[2]
[2][3] [2][3][5] |
[2][5]
[5]
[5] |
[3][7][8]
[3][7][8] [7][8] |
- 配列の先頭から短い方を取り出して新しい配列を作成する
|
[2][3][5][7][8] |
|
[7][8] |
- 残りはそのまま新しい配列の後に並べる
|
[2][3][5][7][8] |
|
並べ替え終わり |
|
交ぜて並べる (降順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
分割し長い順に配列
分割群を比較、長い鉛筆から新配列 |
|
[2][5] |
[3][8][7] |
- 配列を分割する
|
|
|
[3] |
[8][7] |
- 必要なら更に小さい群に分割する
|
|
[3] |
[8][7] |
- 各分割列の鉛筆を長い順にする
|
[8]
[8][7] |
[3]
[3] |
[8][7]
[7] |
- 配列の先頭から長い方を取り出して新しい配列を作成する
|
[8][7][3] |
[3] |
|
- 残りはそのまま新しい配列の後に並べる
|
|
[5][2] |
[8][7][3] |
- 各分割列の鉛筆を長い順にする
|
[8]
[8][7]
[8][7][5]
[8][7][5][3] |
[5][2]
[5][2]
[5][2]
[2] |
[8][7][3]
[7][3]
[3]
[3] |
- 配列の先頭から長い方を取り出して新しい配列を作成する
|
[8][7][5][3] |
[2] |
|
- 残りはそのまま新しい配列の後に並べる
|
[8][7][5][3][2] |
|
並べ替え終わり |
|
|
|
エイヤッと並べる (昇順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
短い鉛筆から選んで配列 |
|
[2][5][3][8][7] |
- 一番短い鉛筆を選ぶ
|
[2] |
[2][5][3][8][7] |
- [2][5]を比較→[2]を選択
- [2][3]を比較→[2]を選択
- [2][8]を比較→[2]を選択
- [2][7]を比較→[2]を選択
|
|
[5][3][8][7] |
- 同様にして残群から一番短い鉛筆を選ぶ
|
[2][3] |
[5][3][8][7] |
- [5][3]を比較→[3]を選択
- [3][8]を比較→[3]を選択
- [3][7]を比較→[3]を選択
|
[2][3][5] |
[5][8][7] |
- 同様にして残群から一番短い鉛筆を選ぶ
|
[2][3][5][7] |
[8][7] |
- 残群から一番短い鉛筆を選ぶ
|
[2][3][5][7][8] |
[8] |
- 残群から一番短い鉛筆を選ぶ
|
[2][3][5][7][8] |
|
並び替え終わり |
|
エイヤッと並べる (降順) |
|
[2][5][3][8][7] |
最初の鉛筆の並び
長い鉛筆から選んで配列 |
|
[2][5][3][8][7] |
- 一番長い鉛筆を選ぶ
|
[8] |
[2][5][3][8][7] |
- [2][5]を比較→[5]を選択
- [5][3]を比較→[5]を選択
- [5][8]を比較→[8]を選択
- [8][7]を比較→[8]を選択
|
|
|
- 同様にして残群から一番長い鉛筆を選ぶ
|
[8][7] |
[2][5][3][7] |
- [2][5]を比較→[5]を選択
- [5][3]を比較→[5]を選択
- [5][7]を比較→[7]を選択
|
[8][7][5] |
[2][5][3] |
- 同様にして残群から一番長い鉛筆を選ぶ
|
[8][7][5][3] |
[2][3] |
- 残群から一番長い鉛筆を選ぶ
|
[8][7][5][3][2] |
[2] |
- 残群から一番長い鉛筆を選ぶ
|
[8][7][5][3][2] |
|
並び替え終わり |
|
|
|
|
|
|
|