バブルソート(単純交換方)
「泡」が浮かび上がるように値が移動していくので「バブルソート」と呼ばれる。
すべての隣りあった値を比べて行って、小さい方が前に移動するように交換する。
データが大量になると時間がかかってしまう。
手順
前提 配列に未整列の値が用意してある
1 末尾の二つの値を比べる。後ろの値が小さい場合、前の値と交換する。
2 前方に向かって繰り返す
3 添字(index)0まで繰り返すと、「最も小さい値」が先頭になる
4 残りの値にも同じように処理を繰り返す
5 最後まで処理が終わると昇順に並んでいる
script.js
//ソート前の配列データ
var a = [1,3,10,2,8];
//調べる範囲の開始位置を1つずつ後ろへ移動するfor文
for(var i = 0; i < a.length; i++){
//後ろから前に向かって小さい値を浮かび上がらせるfor文
for(var j = a.length-1; j>i ; j-- ){
//隣りあう2つの値を比べて、後ろが小さければ交換する
if(a[j]<a[j-1]){
var tmp = a[j];
a[j] = a[j-1];
a[j-1] =tmp;
}
}
}
//ソート後の配列の表示
console.log(a);
補足
・「浮かび上がらせる範囲の開始位置を後ろに移動するfor文」
・「小さい値を後ろから前へ浮かび上がらせるfor文」
二重の繰り返しをおこなっている。