JavaScript によるクイックソート分析の実装

小云云
リリース: 2018-01-11 09:06:27
オリジナル
1773 人が閲覧しました

この記事では、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() 関数を再帰的に呼び出します。再帰が終了すると、小さい配列はベースと大きい配列を結合して、最終的にソートされた配列を形成して戻ります。

関連する推奨事項:

クイックソートの PHP 実装の例

2 次元配列クイックソートアルゴリズムの PHP 実装の例

クイックソートの実装方法

以上がJavaScript によるクイックソート分析の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート