整列アルゴリズム例 
 昇順  降順 (本文はこちら)
選んで並べる (昇順)
   [2][5][3][8][7] 最初の鉛筆の並び
先頭から全組合わせで比較、短い鉛筆を探す
先頭の鉛筆 [2][5][3][8][7]
  1. [2][5]を比較 → 交換しない
  2. [2][3]を比較 → 交換しない
  3. [2][8]を比較 → 交換しない
  4. [2][7]を比較 → 交換しない
2番目の鉛筆 [2][5][3][8][7]
[2][3][5][8][7]
  1. [5][3]を比較 → 交換
  2. [3][8]を比較 → 交換しない
  3. [3][7]を比較 → 交換しない
3番目の鉛筆 [2][3][5][8][7] 
  1. [5][8]を比較 → 交換しない
  2. [5][7]を比較 → 交換しない
4番目の鉛筆 [2][3][5][8][7] 
[2][3][5][7][8]
  1. [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]
  1. [2][5]を比較 → 交換
  2. [5][3]を比較 → 交換しない
  3. [5][8]を比較 → 交換
  4. [8][7]を比較 → 交換しない
2番目の鉛筆 [8][2][3][5][7]
[8][3][2][5][7]
[8][5][2][3][7]
[8][7][2][3][5]
  1. [2][3]を比較 → 交換
  2. [3][5]を比較 → 交換
  3. [5][7]を比較 → 交換
3番目の鉛筆 [8][7][2][3][5]
[8][7][3][2][5]
[8][7][5][2][3]
  1. [2][3]を比較 → 交換
  2. [3][5]を比較 → 交換
4番目の鉛筆 [8][7][5][2][3]
[8][7][5][3][2]
  1. [2][3]を比較 → 交換
  [8][7][5][3][2]  並び替え終わり
  探して並べる (昇順)
   [2][5][3][8][7] 最初の鉛筆の並び
先頭よりの隣と比較、短い鉛筆を先頭よりに
2番目の鉛筆 [2][5][3][8][7]
  1. [2][5]を比較 → 交換しない
3番目の鉛筆 [2][5][3][8][7]
[2][3][5][8][7]
  1. [5][3]を比較 → 交換
  2. [2][3]を比較 → 交換しない
4番目の鉛筆 [2][3][5][8][7]
  1. [5][8]を比較 → 交換しない
  2. [3][8]を比較 → 交換しない
  3. [2][8]を比較 → 交換しない
5番目の鉛筆 [2][3][5][8][7]
[2][3][5][7][8]
  1. [8][7]を比較 → 交換
  2. [5][7]を比較 → 交換しない
  3. [3][7]を比較 → 交換しない
  4. [2][7]を比較 → 交換しない
   [2][3][5][7][8]  並び替え終わり
  探して並べる (降順)
   [2][5][3][8][7] 最初の鉛筆の並び
先頭よりの隣と比較、長い鉛筆を先頭よりに
2番目の鉛筆 [2][5][3][8][7]
[5][2][3][8][7]
  1. [2][5]を比較 → 交換
3番目の鉛筆 [5][2][3][8][7]
[5][3][2][8][7]
  1. [2][3]を比較 → 交換
  2. [5][3]を比較 → 交換しない
4番目の鉛筆 [5][3][2][8][7] 
[5][3][8][2][7]
[5][8][3][2][7]
[8][5][3][2][7]
  1. [2][8]を比較 → 交換
  2. [3][8]を比較 → 交換
  3. [5][8]を比較 → 交換
5番目の鉛筆 [8][5][3][2][7
[8][5][3][7][2] 
[8][5][7][3][2]
[8][7][5][3][2]
  1. [2][7]を比較 → 交換
  2. [3][7]を比較 → 交換
  3. [5][7]を比較 → 交換
  4. [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]
  1. [2][5][3][8]各順に[7]と比較
    [7]≦[8]→[8]が該当
  2. [8][3][5][2]各(逆)順に[7]と比較
    [7]>[3]→[3]が該当
  3. [3][8]が交差→探索修了
  4. [8]と枢軸[7]交換
  5. [7]で分割
  6. 分割された[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]
  1. [2][5]各順に[3]と比較
    [3]≦[5]→[5]が該当
  2. [5][2]各(逆)順に[3]と比較
    [3]>[2]→[2]が該当
  3. [2][5]が交差→探索修了
  4. [5]と枢軸[3]交換
  5. [3]で分割
  6. 分割された[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]
  1. [2][5][3][8]各順に[7]と比較
    [7]>[2]→[2]が該当
  2. [8][3][5][2]各(逆)順に[7]と比較
    [7]≦[8]→[8]が該当
  3. [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]
  1. [8][5][3][2]各順に[7]と比較
    [7]>[5]→[5]が該当
  2. [2][3][5][8]各(逆)順に[7]と比較
    [7]≦[8]→[8]が該当するが
  3. [8][5]が交差→探索修了
  4. [5]と枢軸[7]交換
  5. [7]で分割
  6. 分割された[8][7]は要素1→確定
[8][7]






[8][7][5]
[3][2][5]




[5]
[2][3]
[5]|[2][3]
[2][3]
  1. [3][2]各順に[5]と比較
    [5]>[3]→[3]が該当
  2. [3][2]各(逆)順に[5]と比較
    [5]≦[要素]無く
    該当なし→探索修了
  3. [3]と枢軸[5]交換
  4. [5]で分割
  5. 分割された[5]は要素1→確定
[8][7][5]






[8][7][5][3][2]
[2][3]




[3][2]
  1. [2]と[3]比較
    [3]>[2]→[2]が該当
  2. [2]と[3]と比較
    [3]≦[要素]無く
    該当なし→探索修了
  3. [2]と枢軸[3]交換
  4. [3]で分割
  5. 分割された[3][2]は要素1→確定
[8][7][5][3][2]    並び替え終わり
 
 交ぜて並べる (昇順) 
   [2][5][3][8][7] 最初の鉛筆の並び
分割し短い順に配列
分割群を比較、短い鉛筆から新配列
   [2][5] [3][8][7]
  1. 配列を分割する
    [3] [8][7]
  1. 必要なら更に小さい群に分割する
  [3] [7][8]
  1. 各分割列の鉛筆を短い順にする
[3] [3] [7][8]
  1. 配列の先頭から短い方を取り出して新しい配列を作成する
[3][7][8]   [7][8]
  1. 残りはそのまま新しい配列の後に並べる
  [2][5] [3][7][8] 
  1. 各分割列の鉛筆を短い順にする
[2]
[2][3]
[2][3][5]
[2][5]
[5]
[5]
[3][7][8]
[3][7][8]
[7][8]
  1. 配列の先頭から短い方を取り出して新しい配列を作成する
[2][3][5][7][8]   [7][8]
  1. 残りはそのまま新しい配列の後に並べる
[2][3][5][7][8]   並べ替え終わり
 交ぜて並べる (降順) 
   [2][5][3][8][7] 最初の鉛筆の並び
分割し長い順に配列
分割群を比較、長い鉛筆から新配列
   [2][5] [3][8][7]
  1. 配列を分割する
        [3] [8][7]
  1. 必要なら更に小さい群に分割する
   [3] [8][7]
  1. 各分割列の鉛筆を長い順にする
[8]
[8][7]
[3]
[3]
[8][7]
[7]
  1. 配列の先頭から長い方を取り出して新しい配列を作成する
[8][7][3]   [3]  
  1. 残りはそのまま新しい配列の後に並べる
  [5][2] [8][7][3] 
  1. 各分割列の鉛筆を長い順にする
[8]
[8][7]
[8][7][5]
[8][7][5][3]
[5][2]
[5][2]
[5][2]
[2]
[8][7][3]
[7][3]
[3]
[3]
  1. 配列の先頭から長い方を取り出して新しい配列を作成する
[8][7][5][3] [2]  
  1. 残りはそのまま新しい配列の後に並べる
[8][7][5][3][2]   並べ替え終わり
 
 エイヤッと並べる (昇順)
     [2][5][3][8][7] 最初の鉛筆の並び
短い鉛筆から選んで配列
   [2][5][3][8][7]
  1. 一番短い鉛筆を選ぶ
 


[2]



[2]
[5][3][8][7]
  1. [2][5]を比較→[2]を選択
  2. [2][3]を比較→[2]を選択
  3. [2][8]を比較→[2]を選択
  4. [2][7]を比較→[2]を選択
   [5][3][8][7]
  1. 同様にして残群から一番短い鉛筆を選ぶ


[2][3] 


[5][3][8][7]
  1. [5][3]を比較→[3]を選択
  2. [3][8]を比較→[3]を選択
  3. [3][7]を比較→[3]を選択
[2][3][5] [5][8][7]
  1. 同様にして残群から一番短い鉛筆を選ぶ
[2][3][5][7] [8][7]
  1. 残群から一番短い鉛筆を選ぶ
[2][3][5][7][8] [8]
  1. 残群から一番短い鉛筆を選ぶ
[2][3][5][7][8]   並び替え終わり
  エイヤッと並べる (降順)
   [2][5][3][8][7] 最初の鉛筆の並び
長い鉛筆から選んで配列
   [2][5][3][8][7]
  1. 一番長い鉛筆を選ぶ



[8]



[2][5][3][8][7]
  1. [2][5]を比較→[5]を選択
  2. [5][3]を比較→[5]を選択
  3. [5][8]を比較→[8]を選択
  4. [8][7]を比較→[8]を選択
    
  1. 同様にして残群から一番長い鉛筆を選ぶ


[8][7]


[2][5][3][7]
  1. [2][5]を比較→[5]を選択
  2. [5][3]を比較→[5]を選択
  3. [5][7]を比較→[7]を選択
[8][7][5] [2][5][3]
  1. 同様にして残群から一番長い鉛筆を選ぶ
[8][7][5][3] [2][3]
  1. 残群から一番長い鉛筆を選ぶ
[8][7][5][3][2] [2]
  1. 残群から一番長い鉛筆を選ぶ
[8][7][5][3][2]   並び替え終わり
       
[Xi] [Xj ] [i] [j] [n] など記号で表すと、「今 [i] は幾つだ?」 などと厄介なので、できるだけそういった記号を使わずに手順を書いたのですが、さてさて・・・・?
   
     
  ソートアルゴリズムのアニメーションリスト
 本文の手順方式には沿っていませんが、実に愉快な動画コンテンツがありましたので、併せてご紹介します。
 日本語のコンテンツがあまり見当たらず寂しいのですが・・・。
◇ ソートダンス
楽しみながらよく理解できそうなコンテンツです。
教材により理解の難易度が変わることを教えてくれます。
制作はいずれも、 Sapientia University, Tirgu Mures (Marosvásárhely), Romania

○ 挿入ソート
 整列済み最小配列を作成し、他の要素を適切な位置に挿入して並び替えます。
  Insert-sort with Romanian folk dance
  http://www.youtube.com/watch?v=ROalU379l3U&feature=related
○ バブルソート
 基点となる要素とそれ以外の要素の値を比較・交換しながら並び替えます。
  Bubble-sort with Hungarian ("Csángó") folk dance
  http://www.youtube.com/watch?v=lyZQPjUT5B4&feature=related
     
○ マージソート
 配列を再帰的に分割していき、再び併合(マージ)していくことで、並び替えます。
  Merge-sort with Transylvanian-saxon (German) folk dance
  http://www.youtube.com/watch?v=XaqR3G_NVoo&feature=related
○ クイックソート
 軸要素よりも大きい値と小さい値を入れ替えていくことにより並べ替えます。
  Quick-sort with Hungarian (Küküllőmenti legényes) folk dance
  http://www.youtube.com/watch?v=ywWBy6J5gz8&feature=related
○ 選択ソート
 配列の中から、 最小あるいは最大の値をもつものを探し、それを先頭要素と交換しながら並び替えます。
  Select-sort with Gypsy folk dance
  http://www.youtube.com/watch?v=Ns4TPTC8whw&feature=related
○ シェルソート
 ソート効率を高めるため、あらかじめ離れている要素を交換しておき、挿入ソートで並べ替えます。
  Shell-sort with Hungarian (Székely) folk dance
  http://www.youtube.com/watch?v=CmPA7zE8mx0&feature=related

◇ 知る人ぞ知る「Sorting Out Sorting 」
  30分がっちり勉強しましょう。
  http://video.google.com/videoplay?docid=3970523862559774879#docid=-4110947752111188923
  残念ながら非公開になったようです。
     
  お急ぎの方はこちら、但し雰囲気のみ。
  http://www.youtube.com/watch?v=JdXoUgYQebM (3分)
  http://www.youtube.com/watch?v=gv0JUEqaAXo&feature=related (7分)

◇ これも知る人ぞ知る 教育ビデオ・チュートリアル
  XoaX.netのwebサイトが制作。
 ○ Algorithms Lesson 1: Bubblesort
  http://www.youtube.com/watch?v=P00xJgWzz2c&feature=relmfu
 ○ Algorithms Lesson 2: Insertion Sort
  http://www.youtube.com/watch?v=c4BRHC7kTaQ&feature=relmfu
 ○ Algorithms Lesson 3: Merge Sort
  http://www.youtube.com/watch?v=GCae1WNvnZM&feature=relmfu
     
 ○ Algorithms Lesson 4: Quicksort
  http://www.youtube.com/watch?v=y_G9BkAm6B8&feature=relmfu
 ○ Algorithms Lesson 5: Linear and Binary Searching
  http://www.youtube.com/watch?v=wNVCJj642n4&feature=relmfu
 ○ Algorithms Lesson 6: Big O, Big Omega, and Big Theta Notation
  http://www.youtube.com/watch?v=6Ol2JbwoJp0&feature=fvwrel
 ○ Algorithms Lesson 7: Analyzing Bubblesort
  http://www.youtube.com/watch?v=ni_zk257Nqo&feature=relmfu
 ○ Algorithms Lesson 8: Selection Sort
  http://www.youtube.com/watch?v=6nDMgr0-Yyo&feature=related
 ○ Algorithms Lesson 9: Heaps
  http://www.youtube.com/watch?v=v1YUApMYXO4&feature=relmfu
 ○ Algorithms Lesson 10: Heapsort
  http://www.youtube.com/watch?v=6NB0GHY11Iw&feature=relmfu

  http://xoax.net/comp_sci/crs/algorithms/index.phpからもご覧になれます。
  [XoaX.net] http://xoax.net/ には
   [C++][Computer Science][Web Programming][Math][English][Music][Children's]等、コンテンツが豊富です。

◇ Sorting Algorithm Animations
  アルゴリズムによる処理速度の違いが視覚的に理解できます。一度はご覧ください。
  http://www.sorting-algorithms.com/
   縦横に並んだ[Restart]ボタンをクリックすると、それぞれ初期データ状態やアルゴリズムによる比較ができます。 
     

Animated Sorting Algorithms -David J. Eck
  step実行できるので理解しやすいかも。
  http://math.hws.edu/eck/jsdemo/sortlab.html
    [New Sort]をクリックしてからコンボボックスでアルゴリズムを指定します。

日本のコンテンツも
 ○ [ソート方法][初期配列][配列数]が選択指定でき、ステップ実行もできます。
   http://tokyo-ct.net/usr/kosaka/
   [公開資料][ソートアルゴリズムアニメイション]の[EXE]をダウンロードし実行します。

○  Sorting Algorithms Visualizer
   http://wonderfl.net/c/4xiQ
   左上の[+]でアルゴリズムの指定が、size speed-barで配列数や速さを変更できます。
   初期配列は右上に選択ボタンがあり、[+][-]でシャッフル回数が指定できます。  見やすく美しい作りです。
     

Sorting Algorithms Visualizer - wonderfl build flash online