新しいテクノロジーは絶えず変化しており、いくつかの財団を習得することは、将来のテクノロジーを学習し、絶えず更新するための強固な基盤です。最近何もすることはありません。以前に学んだデータ構造を確認するために、JSのデータ構造にソートアルゴリズムを実装し、この記事の最後にデモを組み込みました。
シンプルなソート
バブルソート
バブルソートは、時間の複雑さの平方で最も単純なソートアルゴリズムであり、コードは次のとおりです。
関数bubblesort(array){for(var i = 0; i <array.length; i ++){for(var j = array.length; j> 0; j-){if(array [j] <array [j -1]){var temp = array [j -1];配列[j -1] = array [j];配列[j] = temp; }} /* output result* /document.write( "これは +(i + 1) +" second loop・、結果は次のとおりです。直接挿入ソート
直接挿入ソートもシンプルなソートアルゴリズムであり、時間の複雑さもNによって四角いですが、パフォーマンスはバブルソートよりもわずかに優れています。コードは次のとおりです。
関数insertSORT(配列){var temp; for(var i = 1; i <array.length; i ++){var temp = array [i]; for(var j = i; j> 0 && temp <array [j -1]; j-){array [j] = array [j -1]; } array [j] = temp /* output result* /document.write( "th? + i +"パスの順序付けの結果は: ")for(var n = 0; n <array.length; n ++){document.write(array [n] +"、 ");} document.write(" <br /> ") /*出力結果* /}[ソート]を選択します
選択のソートは、nの四角の時間の複雑さを備えたシンプルなソートアルゴリズムでもあり、パフォーマンスもバブルソートよりもわずかに優れています。コードは次のとおりです。
関数selectsort(array){var min、temp; ; for(var i = 0; i <array.length; i ++){min = i; for(var j = i+1; j <array.length; j ++){if(array [min]> array [j])min = j; } if(min!= i){temp = array [i];配列[i] = array [min];配列[min] = temp; } /* output result* /document.write( "+ i+"パスの順序付けの結果は: ")for(var n = 0; n <array.length; n ++){document.write(array [n]+"、 ")複雑なソート
丘のソート
Hill Sortingは、挿入ソートのアップグレードです。 1959年、ヒルは、シンプルなソートでペアワイズ比較をステップリアップジャンプの比較を設定することにより、N Squareの時間の複雑さを突破しました。ヒルの並べ替えは、ステップサイズの異なる時間の複雑さに応じて、最高のNlognから最悪のNスクエアになります。コードは次のとおりです。
function shallsort(array){var increment = array.length; var i var temp; // var count = 0を保存します。 {increment = math.floor(increment / 3) + 1; for(i = increment; i <array.length; i ++){if(array [i] <array [i -increment]){temp = array [i]; for(var j = i -increment; j> 0 && temp <array [j]; j- = increment){array [j + increment] = array [j]; } array [j + increment] = temp; /*出力結果*/ count ++; document.write( "<br />++ count+"パスの順序付けの結果は: ")for(var n = 0; n <array.length; n ++){document.write(array [n]+"、 ");} /*出力結果は終了します* /}}} while(increment> 1)}}}}ヒープソート
ヒープソートは、ソートを選択するためのアップグレードです。大きなトップヒープまたは小さなトップヒープを継続的に構築し、最大または最小の値を選択し、ソートのためにキューのフロントエンドに入れます。いずれにせよ、ヒープソートの時間の複雑さはnlognです。コードは次のとおりです。
function heapsort(array){var temp; var i; for(i = math.floor(array.length / 2); i> = 0; i-){heapadjust(array、i、array.length-1); //アレイ配列を大きな上部のヒープにビルドします} for(i = array.length-1; i> = 0; i-){/*ルートノードを交換*/temp = array [i];配列[i] = array [0];配列[0] = temp; /*残りの配列は、大きな上部のヒープに組み込まれ続けています*/ heapadjust(array、0、i -1); /* output result*/document.write( "<br/>+(array.length -i).toString()+"パスの順序付けの結果は: ")for(var n = 0; n <array.length; n ++){document.write(array [n]+"、 ");}アレイの添え字//最大は、配列関数の最終字幕です(配列、start、max){var temp、j; Children ++ if> = array [start] = j;ソートをマージします
マージソートは、複雑なソートで唯一の安定したソートです。分割することでソートしてから、アレイをマージしてソートします。マージの並べ替え時間の複雑さの正方形はnです。コードは次のとおりです。
//ソースソースアレイ// Dest Target Array // s Start subscript // tターゲットサブスクリプト関数msort(source、dest、s、t){var m; //中間値を選択するvar dest2 = new Array(); if(s == t){dest [s] = source [s]; } else {m = math.floor((s + t) / 2); msort(source、dest2、m+1、t);マージ(Dest2、Dest、S、M、T); /*出力結果*/document.write( "<br/>+++ count+"パスソートの結果は: ")for(var n = 0; n <dest.length; n ++){document.write(array [n]+"、 ");}/*出力結果は終了します*/}} // subscript // second array subscript //総長さの関数マージ(var j = m+1、k = s; j <= n && s <= m; k ++){if(source [j]){dest [k] = source [s ++]; dest if(s <= m){for(var l = 0; l <= m -s; l ++){dest [k+l]} if(j <= n){for(var l = 0; l <= n -j; l ++){dest [k+l];クイックソート
クイックソートは、nlognの時間の複雑さを備えた最も高速な既知の種類であり、コードは次のとおりです。
var count = 0;関数QuickSort(配列、低、高){var temp; if(low <high){var keypoint = quicksorthelp(array、low、high); count ++; document.write( "<br />ターミナル? + count +"注文の順序付けの結果は?:: ")for(var l = 0; l <array.length; l ++){document.write(array [l] +"、 ");} QuickSort(Array、Low、Keypoint -1); low、low <high){low && array [high]} array [high] = temp;データ構造におけるさまざまなソートメソッド(JS実装)の上記の概要は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。