Up | English 整列のプログラム  


これは,「バブル・ソート」と呼ばれている方法です ──
比重の軽いもの (バブル) が重いものと入れ替わって上に移動する,というイメージ

  1. 入力の要素である4個の数を,x1, x2, x3, x4 に収納する。

  2. x1(の中の数) と x2(の中の数) を比べて,
    • x1(の中の数) < x2(の中の数) ならば,x1とx2 の内容を入れ換える。
      1. x1の中の数を s に入れる。
      2. x2の中の数を x1 に入れる。
      3. s の中の数を x2 に入れる。

  3. x2(の中の数) と x3(の中の数) について,上と同様のことをする。
  4. x3(の中の数) と x4(の中の数) について,上と同様のことをする。
    (この結果,一番小さい数が x4 に入る。)

  5. x1(の中の数) と x2(の中の数) について,上と同様のことをする。
  6. x2(の中の数) と x3(の中の数) について,上と同様のことをする。
    (この結果,二番目に小さい数が x3 に入る。)

  7. x1(の中の数) と x2(の中の数) について,上と同様のことをする。
    (この結果,三番目に小さい数が x2 に入る。)

  8. x1, x2, x3, x4 の中の数をこの順番に並べたものを,出力する。


改良


入力の要素である4個の数を,x[1], x[2], x[3], x[4] に収納する。

p に 4 を入れてから,以下を繰り返す;
1回終わるごとに p の中にいまより1小さい数を入れる;
p (の中の数) が 1 になったら,繰り返しを終える
{
    j に 1 を入れてから,以下を繰り返す;
    1回終わるごとに j の中にいまより1大きい数を入れる;
    j (の中の数) が p になったら,繰り返しを終える
    {
      x[j] (の中の数) < x[j+1] (の中の数) ならば,
        x[j]の中の数を s に入れる。
        x[j+1]の中の数を x[j] に入れる。
        s の中の数を x[j+1] に入れる。
    }
}

x[1], x[2], x[3], x[4] の中の数をこの順番に並べたものを,出力する。


プログラム言語で書く


    f( x1, x2, x3, x4 )
    {
      x[1] = x1;
      x[2] = x2;
      x[3] = x3;
      x[4] = x4;

      for( p = 4; p > 1; p-- )
      {
        for( j = 1; j < p; j++ )
        {
          if( x[j] < x[j+1] )
          {
            s = x[j];
            x[j] = x[j+1];
            x[j+1] = s;
          }
        }
      }

      return( x[1], x[2], x[3], x[4] );
    }