バブルソートの例、双方向バブルソートのわずかに改善された視覚化を伴う双方向バブルソート。
コードは非常に単純です。不明なバグがあるかどうかはわかりません。
神様、文句を言わないでください
バブルソートの例
var ls = [ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,1 3,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,80,45,64,52,79,77 ]; for(var i = 0; i <ls.length; i ++){for(var j = i+1; j <ls.length; j ++){if(ls [i]> ls [j]){ls [i] = ls [i]+ls [j]; ls [j] = ls [i] -ls [j]; ls [i] = ls [i] -ls [j]; }}}双方向のバブルソートの例
var ls = [ 6,13,98,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,1 3,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,80,45,64,52,79,77 ]; for(var i = 0; i <ls.length; i ++){for(var j = i+1; j <ls.lengt-i; j ++){if(ls [lent-1-i] <ls [lent-j]){ls [lent-1-i] = ls [lent-1-i]+ls [lent-j]; ls [lent-j] = ls [lent-1-i] -ls [lent-j]; ls [lent-1-i] = ls [lent-1-i] -ls [lent-j]; ls [lent-1-i] = ls [lent-1-i] -ls [lent-j]; } //次の比較if(ls [i]> ls [j]){ls [i] = ls [i]+ls [j]; ls [j] = ls [i] -ls [j]; ls [i] = ls [i] -ls [j]; } //前の比較}}わずかに改善された双方向バブルソートの例
var ls = [ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,1 3,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,80,45,64,52,79,77 ]; var lent = ls.length; for(var i = 0; i <ls.length; i ++){for(var j = i*2; j <ls.length-2*i; j ++){if(ls [i*2]> ls [j+1]){ls [i*2] = ls [i*2]+ls [j+1]; ls [j+1] = ls [i*2] -ls [j+1]; ls [i*2] = ls [i*2] -ls [j+1]; ls [i*2] = ls [i*2] -ls [j+1]; } //内部層の最初の数値を最小ループとして保持するif(ls [lent-i*2-1] <ls [lent-j-1]){ls [lent-i*2-1] = ls [lent-i*2-1]+ls [lent-j-1]; ls [lent-j-1] = ls [lent-i*2-1] -ls [lent-j-1]; ls [lent-i*2-1] = ls [lent-j-1]; } ////内側層の数を最大サイクルに保持する場合(ls [lent-2-i*2] <ls [lent-j-1]){ls [lent-2-i*2] = ls [lent-2-i*2]+ls [lent-j-1]; ls [lent-j-1] = ls [lent-2-i*2] -ls [lent-j-1]; ls [lent-2-i*2] = ls [lent-j-1]; ls [lent-2-i*2] = ls [lent-j-1]; ls [lent-2-i*2] = ls [lent-j-1]; } //最後のif(ls [i*2+1]> ls [j+1]){ls [i*2+1] = ls [i*2+1]+ls [j+1]; ls [j+1] = ls [i*2+1] -ls [j+1]; ls [i*2+1] = ls [i*2+1] -ls [j+1]; }//次}}