バブルソート
N個のデータが,配列 a[0]〜 a[N-1]に格納されているとする.
バブルソート:
- 比較と交換により,a[0]〜a[N-1]の内,最大のものをa[N-1]に移動する
- 比較と交換により,a[0]〜a[N-2]の内,最大のものをa[N-2]に移動する
- 比較と交換により,a[0]〜a[N-3]の内,最大のものをa[N-3]に移動する
- ...
- 比較と交換により,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]に移動する操作:
- a[0]とa[1]を比較し,a[0]>a[1]なら値を交換する
- a[1]とa[2]を比較し,a[1]>a[2]なら値を交換する
- a[2]とa[3]を比較し,a[2]>a[3]なら値を交換する
- ...
- 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]の値を交換する
}