バブルソート


N個のデータが,配列 a[0]〜 a[N-1]に格納されているとする.

バブルソート

  1. 比較と交換により,a[0]〜a[N-1]の内,最大のものをa[N-1]に移動する
  2. 比較と交換により,a[0]〜a[N-2]の内,最大のものをa[N-2]に移動する
  3. 比較と交換により,a[0]〜a[N-3]の内,最大のものをa[N-3]に移動する
  4. ...
  5. 比較と交換により,a[0]〜a[1]の内,最大のものをa[1]に移動する
      for(k=N-1; k>1; k--) {
          比較と交換により,a[0]〜a[k]の内,最大のものをa[k]に移動する
      }

比較と交換により,a[0]〜a[k]の内,最大のものをa[k]に移動する操作

  1. a[0]とa[1]を比較し,a[0]>a[1]なら値を交換する
  2. a[1]とa[2]を比較し,a[1]>a[2]なら値を交換する
  3. a[2]とa[3]を比較し,a[2]>a[3]なら値を交換する
  4. ...
  5. a[k-1]とa[k]を比較し,a[k-1]>a[k]なら値を交換する
      for(m=0; m<k; m++) {
          if(a[m] > a[m+1])  a[m]とa[m+1]の値を交換する
      }