Shammer's Philosophy

My private adversaria

Cでバブルソート

配列の使い方を学ぶのに効果的な練習の一つはやっぱり代表的なアルゴリズムの実装だろう。
といっても、これ自体は非常にメジャーすぎてちょっと探せばすぐにネット上でロジックが見つかるはず。
真新しいものではないがちょっと書いてみた。


void bubbleSort(int a[]) {
 int pass, j, hold;
 for( pass = 1 ; pass < SIZE ; pass++ ) {
  for( j = 0 ; j < SIZE - 1 ; j++ ) {
   if( a[j] > a[j+1] ) {
    hold = a[j];
    a[j] = a[j+1];
    a[j+1] = hold;
   }
  }
 }
}


バブルソートは二つ並んだ数値を比較して、大きい方あるいは小さい方をひたすら前に押し出していく、
という感じのアルゴリズム。肝になるのはそのまま入れ替えたのでは配列の左側にある情報が上書きされてしまうからそれを退避させておく、という点くらいなもの。
単純なだけに実装は簡単だが、パフォーマンスも悪いアルゴリズムだ。