JavaScript バブルソート

  • 1
    Like
  • 0
    Comment

バブルソート(単純交換方)

「泡」が浮かび上がるように値が移動していくので「バブルソート」と呼ばれる。
すべての隣りあった値を比べて行って、小さい方が前に移動するように交換する。
データが大量になると時間がかかってしまう。

手順
前提 配列に未整列の値が用意してある
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文」
二重の繰り返しをおこなっている。