Heim > Java > JavaBase > Hauptteil

So implementieren Sie eine schnelle Sortierung in Java

王林
Freigeben: 2019-11-25 14:23:53
nach vorne
2761 Leute haben es durchsucht

So implementieren Sie eine schnelle Sortierung in Java

Im folgenden Abschnitt der Kolumne Java-Einführung wird erläutert, wie die schnelle Sortierung in Java implementiert wird. Ich hoffe, dass dieser Sortieralgorithmus allen helfen kann!

Die zeitliche Komplexität der Schnellsortierung ist nicht festgelegt. Im schlimmsten Fall (Auswahl des ersten Elements als Basiselement in einem ursprünglich umgekehrt sortierten Array) ist die Geschwindigkeit relativ langsam und erreicht O(n^2). ) (eine Effizienz ähnlich der Auswahlsortierung), aber wenn die Zeitkomplexität unter idealen Umständen O(nlogn) ist.

Der Schlüssel zur Implementierung einer schnellen Sortierung besteht darin, zuerst eine Zahl im Array auszuwählen und dann die Zahl im Array in zwei Teile zu teilen. Die Zahl, die kleiner als die ausgewählte Zahl ist, wird nach links verschoben im Array und ist kleiner als die ausgewählte Zahl. Die größere Zahl wird nach rechts vom Array verschoben. Dies verkörpert die Idee des Teilens und Herrschens.

Lassen Sie uns diese Funktion implementieren:

int Partition(int data[],int length,int start,int end)
{
	if(data == nullptr || length <= 0 || start < 0 || end >=length)
		throw new std::exception("Invalid Parameters");
	int index = RandomInRange(start,end);
	Swap(&data[index],&data[end]);
	int small = start - 1;
	for(index = start; index < end; index++)
	{
		if(data[index]<data[end])
		{
			++small;
			if(small != index)
				Swap(&data[index],&data[small]);
		}
	}
	++small;
	Swap(&data[small],&data[end]);
	return small;
}
int RandomInRange(int min, int max)
{
	int random = rand()%(max - min +1) +min;
	return random;
}
int Swap(int *num1, int *num2)
{
	int temp = *num1;
	*num1 = num2;
	*num2 = temp;
}
Nach dem Login kopieren

Die Funktion RandomInRange im obigen Code wird verwendet, um eine Zufallszahl zwischen Anfang und Ende zu generieren, und die Funktion Swap wird verwendet, um zwei Zahlen auszutauschen.

Im Folgenden verwenden wir Rekursion, um einen schnellen Sortiercode zu implementieren:

void QuickSort(int data[], int length, int start, int end)
{
	if(start == end)
		return;
	int index = Partition(data, length, start, end);
	if(index > start)
		QuickSort(data, length, start, index -1);
	if(index < end)
		QuickSort(data, length, index + 1, end);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine schnelle Sortierung in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!