この記事では、JavaScriptでクイックソートを実装する方法を主に紹介し、クイックソートの原理、実装方法、および関連する操作上の注意点をサンプル形式で分析します。
アイデア:
分割統治思考と再帰的手法により、より小さな要素とより大きな要素を含む異なるサブシーケンスにデータを分解します
1. 配列内の要素を基礎として選択します
2. 、ベンチマークより小さい要素はベンチマークの左側に移動され、ベンチマークより大きい要素はベンチマークの右側に移動されます
3. ベンチマークの左側と右側の 2 つのサブセットに対して最初の 2 つの手順を繰り返します。すべてのサブセットまで 残りの要素が 1 つだけになるまで
実装コード:
function sqort(arr){ if(arr.length===0){ return []; } var left=[]; var right=[]; var pivot=arr[0];//(基准以首元素) for(var i=1;i<arr.length;i++){ if(arr[i]<pivot){ left.push(arr[i]); }else{ right.push(arr[i]); } } return sqort(left).concat(pivot,qsort(right));//递归 } var a=[]; for (i=0;i<10;++i){ a[i]=Math.floor(Math.random()*100+1); } console.log(a); console.log(sqort(a)); //(基准以中间元素的情况) function sqort(arr){ if(arr.length<=1){ return arr; } var left=[]; var right=[]; var pivotIndex=Math.floor(arr.length/2); var pivot=arr.splice(pivotIndex,1)[0];//(基准以中间元素) for(var i=1;i<arr.length;i++){ if(arr[i]<pivot){ left.push(arr[i]); }else{ right.push(arr[i]); } } return sqort(left).concat(pivot,sqort(right));//递归 } var a=[12,34,23,78,34,26]; console.log(a); console.log(sqort(a));
注: 小さい配列と大きい配列のそれぞれに対して sqort()
関数を再帰的に呼び出します。再帰が終了すると、小さい配列はベースと大きい配列を結合して、最終的にソートされた配列を形成して戻ります。
関連する推奨事項:
以上がJavaScript によるクイックソート分析の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。