ホームページ >ウェブフロントエンド >jsチュートリアル >2 つの実用的な js ソート アルゴリズムの分析
この記事の内容は、2 つの実用的な JS ソート アルゴリズムの分析を共有することです。必要な友人はそれを参照できます。ゼロ: 配列 arr=[2,5] を指定してデータを準備します。 ,4,1,7,3,8,6,9,0];
1: フェイクソート1 アイデア: バブルソートのアイデア: 毎回隣接する 2 つのデータのサイズを比較し、小さい方がランク付けされますまず、前方のデータが後方のデータより大きい場合、2 つの数値の位置を交換します 上記のルールを実装するには、2 つの層の for ループを使用する必要があります。外側の層は最初の数値から 2 番目の数値に進みます。最後の番号まで、内側のレイヤーは外側の番号から始まります。 レイヤーの最後の番号から最後の番号まで
2 特徴: ソートアルゴリズムの基礎。これはシンプルで実用的で理解しやすいですが、多くの比較が必要で効率が低いという欠点があります。
var times=0; var bubbleSort=function(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){//如果前面的数据比后面的大就交换 var temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } console.log("第"+(++times)+"次排序后:"+arr); } } return arr; } console.log("The result is:"+bubbleSort(arr));4 効率: 配列の長さ 10、ソート回数 45 回。 2: クイックソート1 アイデア: クイックソートのアイデア: 最初に参照点 (通常はインデックス配列の中央) を見つけ、次に参照点によって配列を 2 つの部分に分割し、それを参照点データと比較します。それよりも優れている場合は、左側に配置します。そうでない場合は、右側に配置します。
左右の空の配列を使用して、比較したデータを保存します。最後に、配列の長さが 1 以下になるまで上記の操作を再帰的に実行します。
2 特徴: 高速でよく使用されます。欠点は、さらに 2 つの配列を宣言する必要があるため、メモリ空間リソースが無駄になることです。
var times=0; var quickSort=function(arr){ //如果数组长度小于等于1无需判断直接返回即可 if(arr.length<=1){ return arr; } var midIndex=Math.floor(arr.length/2);//取基准点 var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1] var left=[];//存放比基准点小的数组 var right=[];//存放比基准点大的数组 //遍历数组,进行判断分配 for(var i=0;i<arr.length;i++){ if(arr[i]<midIndexVal){ left.push(arr[i]);//比基准点小的放在左边数组 } else{ right.push(arr[i]);//比基准点大的放在右边数组 } console.log("第"+(++times)+"次排序后:"+arr); } //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1; return quickSort(left).concat(midIndexVal,quickSort(right)); }; console.log(quickSort(arr));4 効率: 配列の長さ 10、ソート回数 22 回。
3: 概要
関連する推奨事項:
js の 3 つの主要な並べ替えアルゴリズム実装コード JS のトップ 10 の古典的な並べ替えアルゴリズム js の並べ替えアルゴリズムの実装 (バブル、選択、挿入、 2番目挿入、早く、希望...
以上が2 つの実用的な js ソート アルゴリズムの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。