バブルソートor単純交換法
2010/03/30(火) 7:16 Javascript親記事へこのエントリーをはてなブックマークに追加

映像でイメージを


重いものは右(下)に行って、一ループごとに右側からソート済みとなり固定される。
2回目の見れば分かるけど、軽いものがどんどん上がってるように見えるからバブルソート。
簡単らしいけどとっても効率は悪い。
  1. 交換対象を選ぶのは右側から始める(デクリメントになってるのはそういうこと)
  2. 軽いものが左に行くので、j < j-1だったら交換する。
  3. 後はこれを繰り返す
正直プログラムにするとあんまり分かりやすくない。++ --が混じって分かりづらい。
もっと分かりやすい書き方が欲しい。
var arr = [3, 2, 8, 7, 4, 6, 1, 0, 5, 9];
function bubbleSort(ary){
    for(var i=0;i<ary.length-1;i++){
        for(var j=ary.length-1;j>i;j--){
            if(ary[j] < ary[j-1]){
                    var t = ary[j];
                    ary[j] = ary[j-1];
                    ary[j-1] = t;
            }         
        }      
    }
    console.log(ary);
}
bubbleSort(arr)

名前:  非公開コメント   

  • TB-URL  http://efcl.info/adiary/028/tb/