ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript を使用してクイック ソートを実装する方法 (詳細なチュートリアル)

JavaScript を使用してクイック ソートを実装する方法 (詳細なチュートリアル)

亚连
亚连オリジナル
2018-06-12 17:00:421504ブラウズ

この記事では主にJavaScriptでクイックソートを実装する方法を紹介し、サンプルの形でクイックソートの原理、実装方法、関連する操作上の注意点を分析します。 JavaScriptのメソッドでクイックソートを実装します。参考までに皆さんと共有してください。詳細は次のとおりです。

考えたこと: 分割統治のアイデアと再帰的手法を使用して、データを小さい要素と大きい要素を順番に含む異なるサブシーケンスに分解します

1. 配列内でベンチマークとして要素を選択します

2. 配列を走査し、ベンチマークより小さい要素はベンチマークの左側に移動し、ベンチマークより大きい要素はベンチマークの右側に移動します

3ベンチマークの左側と右側の 2 つのサブセットについて、すべてのサブセットに要素が 1 つだけ残るまで最初の 2 つの手順を繰り返します

実装コード:

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));
上記は、私が皆さんのためにコンパイルしたものです。今後皆さんのお役に立てば幸いです。

関連記事:

React の要素、コンポーネント、インスタンス、ノードの詳細な解釈

AngularJS でデータを動的に追加および削除するにはどうすればよいですか?

JS strictモードの知識ポイントを詳しく解説!

以上がJavaScript を使用してクイック ソートを実装する方法 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。