ホームページ  >  記事  >  ウェブフロントエンド  >  2 つの実用的な js ソート アルゴリズムの分析

2 つの実用的な js ソート アルゴリズムの分析

零到壹度
零到壹度オリジナル
2018-04-09 14:57:021481ブラウズ

この記事の内容は、2 つの実用的な JS ソート アルゴリズムの分析を共有することです。必要な友人はそれを参照できます。ゼロ: 配列 arr=[2,5] を指定してデータを準備します。 ,4,1,7,3,8,6,9,0];

1: フェイクソート

1 アイデア: バブルソートのアイデア: 毎回隣接する 2 つのデータのサイズを比較し、小さい方がランク付けされますまず、前方のデータが後方のデータより大きい場合、2 つの数値の位置を交換します

上記のルールを実装するには、2 つの層の for ループを使用する必要があります。外側の層は最初の数値から 2 番目の数値に進みます。最後の番号まで、内側のレイヤーは外側の番号から始まります。 レイヤーの最後の番号から最後の番号まで
2 特徴: ソートアルゴリズムの基礎。これはシンプルで実用的で理解しやすいですが、多くの比較が必要で効率が低いという欠点があります。

3 実装:

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 つの配列を宣言する必要があるため、メモリ空間リソースが無駄になることです。

3 実装:

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: 概要

どちらの方法にもそれぞれ長所と短所がありますが、プログラマーとして、これら 2 つの方法をマスターする必要があります。1 つは最も基本的なもので、もう 1 つは最も一般的に使用されるものであり、必ず遭遇するでしょう。インタビューや日常生活で。

関連する推奨事項:

js の 3 つの主要な並べ替えアルゴリズム実装コード


JS のトップ 10 の古典的な並べ替えアルゴリズム

js の並べ替えアルゴリズムの実装 (バブル、選択、挿入、 2番目挿入、早く、希望...

以上が2 つの実用的な js ソート アルゴリズムの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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