多くのソートアルゴリズムの中で、直感的に最も理解しやすいのは、バブルソートといわれている。バブルとは「泡」のことで、並べ替えの過程でデータが下から上へ移動する様子が、泡が浮かんでいくように見えることからこの名前がついたらしい。

<関数名>
  bubbleSort —- バブル法によるソート

<形式>
  void bubbleSort(DATA *data, int nmem, int asdes);

<引数>
  typedef struct {
    int key;   /* 比較のキーとなるフィールド */
    int info;   /* その他のフィールド */
  } DATA;
  data (入出力) データレコードの配列
  nmem (入力) レコード配列の大きさ
  asdes (入力) 昇順・降順別、0:昇順, 1:降順

<関数値>
  なし

<用例>
  bubbleSort-test.c

<関数本体>
  bubbleSort.c

<説明>
  縦方向一列に並んだレコードの中で、値の小さいレコード(昇進の場合)は軽く、泡(バブル)のように上に浮かんでいく、というようにイメージすれば分かりやすい。
  まず下から全体を走査して、隣接する2つのレコードの大小順序が狂ったとき、2つを入れ換える。この走査で、一番値の小さい(軽い)レコードが1番上に浮かびあがる。つぎに下から上2つ目のレコードまで走査して隣り同士を必要に応じて入れ換えることにより、その中の最小のものが上から2つ目のレコードに浮かびあがる。このように最後のレコードまで繰り返して終了。
  ご利用の際、データ構造を実際の問題に合わせて修正してほしい。

Comments are closed.

Post Navigation