ホームページ > 記事 > ウェブフロントエンド > JavaScript を使用してクイック ソートを実装する方法 (詳細なチュートリアル)
この記事では主に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 サイトの他の関連記事を参照してください。