バブルソート:それは、大部分から小、小さいまたは小さい順に順に配列の要素を配置することです。
var array = [9,8,7,6,5,4,3,2,1];
最初のラウンド比較:8,7,6,6,5,4,3,2,1,9は8回I = 0 j = array.length-1-iを交換しました
2回目のラウンド比較:7,6,5,4,3,2,1,8,9は7回I = 1 j = array.length-1-iを交換しました
3回目のラウンド比較:6,5,4,3,2,1,7,8,9スワップ6回i = 2 j = array.length-1-i
第4ラウンドの比較:5,4,3,2,1,6,7,8,9は5回I = 3 j = array.length-1-iを交換しました
第5ラウンドの比較:4,3,2,1,5,6,7,8,9は4回I = 4 j = array.length-1-iを交換しました
第6ラウンドの比較:3,2,1,4,5,6,7,8,9は3回I = 5 j = array.length-1-iを交換しました
7回目のラウンド比較:2,1,3,4,5,6,7,8,9は2回I = 6 j = array.length-1-iを交換しました
8回目のラウンド比較:1,2,3,4,5,6,7,8,9 1時間I = 7 j = array.length-1-i
コード実装:
var temp; var array = [9,8,7,6,5,4,3,2,1]; //(var i = 0; i <array.length-1; i ++){//(var j = 0; j <array.length-1-i; j ++){j+1)変数temp = array [j]; array [j] = array [j+1];配列[j+1] = temp; }}} console.log(array);コードの最適化:
var temp、bool、m = 0; var array = [9,8,7,6,5,4,3,2,1]; for(var j = 0; j <array.length-1-i; j ++){if(array [j]> array [j+1]){// 2つの変数temp = array [j]; array [j] = array [j+1];配列[j+1] = temp; bool = false; //スイッチを切り替えます}} //内側のループ内のifが実行されない場合(スイッチが閉じられている場合は、次のステートメントを実行します)。 if(bool){break; } m ++;} console.log(array+"、"+m+"wheel");注:比較ラウンドの最良のケースは0ラウンドで、最悪の場合は8ラウンドです。
バブルソートアルゴリズムを見てみましょう
// JavaScriptバブルソート、そして基本タイプのプロトタイプに直接追加する//ここでは、JavaScript言語エッセンスコードを使用して、基本型プロトタイプにメソッドを追加します。 //配列と文字列自体がコンストラクターであるため、新しいコンストラクターラインを介してオブジェクトを作成するため、配列とstring.prototypeすべてのポイントfunction.prototype // array.methodの場合、最初のアクセスアレイの機能オブジェクト、メソッドメソッドがありません。 if(!this.prototype [name]){//最初にプロトタイプにこの方法があるかどうかを判断するのが最善です。 this.prototype [name] = func; }これを返します。 }; array.method( 'bubble'、function(){//バブルアルゴリズムは合計、つまりlen times、および最小のものが最後のvar len = this.length; var i = 0、j = 0、tmp = 0; j ++){この[J+1] {これ[J] =この[J+1]};アラート([21,32,1,31,22,45,68,37、]。bubble());私は別のフロントエンドエンジニアであるXifeng Shoumaのコードを見ました。 for loopの最初の層では、Exchange Exchangeフラグが偽です。交換があるとき、それは本当になります。 forループの2番目のレイヤーが終了した後、判断が追加されます。それが間違っている場合、つまり、前から背面への交換はなく、サイズの順序が正しいことを証明します。ループのために外側から飛び出すことができます。
//並べ替える必要があるArray var list = array(23、45、18、37、37、92、13、24); // array length var n = list.length; // Exchange Order var tmp; /// Exchange Flag var Exchange; //(var time = 0; time <n -1; time + +) for(var i = n -1; i> time; i-){if(list [i] <list [i -1]){exchange = true; tmp = list [i -1];リスト[i]; list [i] = tmp; }} //この順序に交換がない場合、アルゴリズムは(!Exchange){break; }} alert( 'array sorted is:' + list + '、nは合計' + time + 'walk');私は以前にネチズンのアルゴリズムを収集しましたが、これは非常に良いことです。それを見てください。
function bubblesort(array){var length = array.length; var temp; var issort = false; for(var i = 1; i <length; i ++){sistort = false; for(var j = 0; j <length -i; j ++){if(array [j]> array [j+1]){// swap temp = array [j]; array [j] = array [j+1];配列[j+1] = temp; ISSORT = true; }} if(!sistort)break; //交換が発生しない場合、ループを終了}} var array = [10、-3,5,34、-34,5,0,9]; Bubblesort(配列); for(var i = 0; i <array.length; i ++){document.write(array [i]+""); }さて、今日はこれらを要約しましょう。友達がJavaScriptのバブルソートを学ぶことが役立つことを願っています。