JavaScript バブルソート

  • 0
    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文」
    二重の繰り返しをおこなっている。