LoginSignup
10
12

More than 5 years have passed since last update.

JavaScript バブルソート

Posted at

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

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

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

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12