Heim > Web-Frontend > js-Tutorial > Analyse zweier praktischer js-Sortieralgorithmen

Analyse zweier praktischer js-Sortieralgorithmen

零到壹度
Freigeben: 2018-04-09 14:57:02
Original
1583 Leute haben es durchsucht

Der Inhalt dieses Artikels besteht darin, die Analyse zweier praktischer js-Sortieralgorithmen mitzuteilen, die einen bestimmten Referenzwert haben. Freunde in Not können sich darauf beziehen

Null: Datenvorbereitung, gegebenes Array arr=[2,5,4,1,7,3,8,6,9,0];

1: Fake-Sortierung

1 Idee: Blasensortierung Idee: Jedes Mal, wenn die Größe zweier benachbarter Daten verglichen wird, kommt die kleinere zuerst. Wenn die vorherigen Daten größer als die späteren sind, tauschen Sie die Positionen der beiden Zahlen aus
Um das oben Gesagte umzusetzen Regeln müssen Sie Go zu einer zweischichtigen for-Schleife verwenden. Die äußere Schicht zählt von der ersten bis zur vorletzten Zahl und die innere Schicht zählt von der letzten Zahl bis zur letzten Zahl in der äußeren Schicht

2 Merkmale: Die Grundlage des Sortieralgorithmus. Es ist einfach, praktisch und leicht zu verstehen. Der Nachteil besteht darin, dass es viele Vergleiche erfordert und weniger effizient ist.

3 Implementierung:

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));
Nach dem Login kopieren

4 Effizienz: Array-Länge 10, Sortierzeiten 45-mal.

2: Schnellsortierung

1 Idee: Schnellsortierung Idee: Suchen Sie zuerst einen Referenzpunkt (im Allgemeinen die Mitte des Indexarrays), dann wird das Array durch den Referenzpunkt in zwei Teile geteilt , und das Array wird nacheinander in zwei Teile geteilt. Wenn es kleiner ist, platzieren Sie es auf der linken Seite.
Verwenden Sie links und rechts ein leeres Array, um die verglichenen Daten zu speichern. Schließlich werden die oben genannten Operationen rekursiv ausgeführt, bis die Array-Länge <=1;

2 beträgt. Merkmale: Schnell und häufig verwendet. Der Nachteil besteht darin, dass zwei zusätzliche Arrays deklariert werden müssen, was Speicherplatzressourcen verschwendet.

3 Implementierung:

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));
Nach dem Login kopieren

4 Effizienz: Array-Länge 10, Sortierzeiten 22-mal.

3: Zusammenfassung

Beide Methoden haben ihre eigenen Vor- und Nachteile, aber diese beiden Methoden müssen als Programmierer beherrscht werden, da eine die grundlegendste und die andere die einfachste ist ist die am häufigsten verwendete und kommt in Vorstellungsgesprächen oder im täglichen Leben vor.

Verwandte Empfehlungen:

JS drei wichtige Implementierungscodes für Sortieralgorithmen

Die zehn besten klassischen Sortieralgorithmen von JS

JS implementiert einen Sortieralgorithmus (Blase, Auswahl, Einfügung, binäre Einfügung, schnell, Hash... ).

Das obige ist der detaillierte Inhalt vonAnalyse zweier praktischer js-Sortieralgorithmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage