Inhaltsverzeichnis
Wie funktioniert die Schnellsortierung in Java?
Beispiele zur Implementierung der Schnellsortierung in Java
Code-Implementierung des Schnellsortierungsalgorithmus in Java
Fazit
Heim Java javaLernprogramm Schnelle Sortierung in Java

Schnelle Sortierung in Java

Aug 30, 2024 pm 03:32 PM
java

Der folgende Artikel, Quick Sort in Java, bietet eine Übersicht über den Quick Sort-Algorithmus in Java. Der Schnellsortierungsalgorithmus ist einer der Sortieralgorithmen, der effizient ist und dem Zusammenführungssortierungsalgorithmus ähnelt. Dies ist einer der am häufigsten verwendeten Algorithmen für Echtzeitsortierungszwecke. Die Zeitkomplexität dieses Algorithmus im ungünstigsten Fall beträgt O(n^2), die Zeitkomplexität im durchschnittlichen Fall beträgt O(n log n) und die Zeitkomplexität im besten Fall beträgt O(n log n).

Die Raumkomplexität, wenn O(n log n), wobei n die Größe der Eingabe ist. Der Sortierprozess umfasst die Partitionierung der Eingabe, rekursive Iterationen und die Markierung eines zentralen Elements für jede Rekursion. Die Art der Sortierung in diesem Algorithmus beinhaltet einen iterativen Vergleich benachbarter Elemente.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Wie funktioniert die Schnellsortierung in Java?

Der Schnellsortierungsalgorithmus kann in Java implementiert werden, indem ein Pseudocode mit einer Abfolge von Schritten gebildet wird, die auf effiziente Weise entworfen und befolgt werden.

  • Das Hauptprinzip des schnellen Sortieralgorithmus basiert auf dem Divide-and-Conquer-Ansatz und ist auch ein effizienter Sortieralgorithmus.
  • Das Eingabearray ist in Unterarrays unterteilt, und die Aufteilung basiert auf dem Pivot-Element, das ein zentrales Element ist. Die Unterarrays auf beiden Seiten des Pivot-Elements sind die Hauptbereiche, in denen die Sortierung tatsächlich stattfindet.
  • Das zentrale Pivot-Element ist die Basis zur Aufteilung des Arrays in zwei Partitionen, wobei die linke Hälfte der Array-Elemente kleiner als das Pivot-Element und die rechte Hälfte der Array-Elemente größer als das Pivot-Element ist.
  • Bevor wir das Pivot-Element in Betracht ziehen, kann es sich um jedes beliebige Element eines Arrays handeln. Um das Verständnis zu erleichtern, wird dies normalerweise als mittlerer oder erster oder letzter betrachtet. Das Pivot-Element kann ein zufälliges Element aus einem der Array-Elemente sein.
  • In unserem Beispiel wird das letzte Element eines Arrays als Pivot-Element betrachtet, wobei die Partitionierung von Unterarrays am rechten Ende des Arrays beginnt.
  • Schließlich befindet sich das Pivot-Element nach Abschluss des Sortiervorgangs in seiner tatsächlichen Sortierposition, wobei der Hauptprozess des Sortierens in der Partitionslogik des Sortieralgorithmus liegt.
  • Die Effizienz des Algorithmus hängt von der Größe der Unterarrays und deren Ausgewogenheit ab. Je unausgeglichener die Unterarrays sind, desto größer ist die zeitliche Komplexität, was im schlimmsten Fall zur Komplexität führt.
  • Die zufällige Auswahl von Pivot-Elementen führt in vielen Fällen zu der besten Zeitkomplexität, anstatt einen bestimmten Start-, End- oder Mittelindex als Pivot-Elemente auszuwählen.

Beispiele zur Implementierung der Schnellsortierung in Java

Der QuickSort-Algorithmus wurde wie folgt mit der Programmiersprache Java implementiert und der Ausgabecode wurde unter dem Code angezeigt.

  • Der Code übernimmt zunächst die Eingabe mithilfe der Methode quickSortAlgo() mit dem Array, dem Anfangsindex und dem Endindex, d. h. der Länge des Arrays, als Argumente.
  • Nach dem Aufruf der Methode „quickSortAlgo()“ prüft sie, ob der Anfangsindex kleiner als der Endindex ist, und ruft dann die Methode „arrayPartition()“ auf, um den Wert des Pivot-Elements abzurufen.
  • Das Partitionselement enthält die Logik zum Anordnen der kleineren und größeren Elemente basierend auf den Elementwerten um das Pivot-Element.
  • Nachdem nach der Ausführung der Partitionsmethode der Pivot-Elementindex abgerufen wurde, wird die Methode quickSortAlgo() selbst rekursiv aufgerufen, bis alle Unterarrays vollständig partitioniert und sortiert sind.
  • In der Partitionslogik wird das letzte Element als Pivot-Element zugewiesen und das erste Element mit dem Pivot-Element verglichen, d. h. dem letzten, bei dem die Elemente je nachdem, ob sie kleiner oder größer sind, vertauscht werden.
  • Dieser Rekursionsprozess findet statt, bis alle Elemente eines Arrays partitioniert und sortiert sind, wobei das Endergebnis ein kombiniertes sortiertes Array ist.
  • Die Elemente werden innerhalb der For-Schleifen-Iteration nur dann ausgetauscht, wenn das Element kleiner oder gleich dem Pivot-Element ist.
  • Nach Abschluss des Iterationsprozesses wird das letzte Element ausgetauscht, d. h. der Wert des Pivotelements wird auf die linke Seite verschoben, sodass die neuen Partitionen erstellt werden, und der gleiche Vorgang wiederholt sich in Form einer Rekursion, was zu einer Reihe von führt Sortieroperationen auf verschiedenen möglichen Partitionen als Bildung von Unterarrays aus den gegebenen Array-Elementen.
  • Der folgende Code kann auf jeder IDE ausgeführt werden und die Ausgabe kann durch Ändern des Array-Werts in main() überprüft werden. Die Hauptmethode wird nur dazu verwendet, die Ausgabe in der Konsole abzurufen. Als Teil der Java-Codierungsstandards kann die Hauptmethode unten entfernt und ein Objekt erstellt werden. Außerdem können die folgenden Methoden aufgerufen werden, indem sie nicht statisch gemacht werden.

Code-Implementierung des Schnellsortierungsalgorithmus in Java

Es folgt eine Code-Implementierung:

Code:

/*
* Quick Sort algorithm - Divide & Conquer approach
*/
public class QuickSortAlgorithm {
public static void main(String[] args) {
int[] array = { 99, 31, 1, 3, 5, 561, 1, 342, 345, 454 };
quickSortAlgo(array, 0, array.length - 1);
for (int ar : array) {
System.out.print(ar + " ");
}
}
public static int arrayPartition(int[] array, int start, int end) {
int pivot = array[end];
int i = (start - 1);
for (int ele = start; ele < end; ele++) {
if (array[ele] <= pivot) {
i++;
int swap = array[i];
array[i] = array[ele];
array[ele] = swap;
}
}
// Swapping the elements
int swap = array[i + 1];
array[i + 1] = array[end];
array[end] = swap;
return i + 1;
}
public static void quickSortAlgo(int[] arrayTobeSorted, int start, int end) {
if (start < end) {
int pivot = arrayPartition(arrayTobeSorted, start, end);
quickSortAlgo(arrayTobeSorted, start, pivot - 1);
quickSortAlgo(arrayTobeSorted, pivot + 1, end);
}
}
}
Nach dem Login kopieren

Ausgabe:

Schnelle Sortierung in Java

Fazit

Der Schnellsortierungsalgorithmus ist effizient, aber im Vergleich zu anderen Sortiertechniken nicht sehr stabil. Die Effizienz schneller Sortieralgorithmen nimmt ab, wenn eine größere Anzahl wiederholter Elemente vorliegt, was einen Nachteil darstellt. Die Platzkomplexität wird in diesem Schnellsortierungsalgorithmus optimiert.

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

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1666
14
PHP-Tutorial
1273
29
C#-Tutorial
1253
24
Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

PHP: Eine Schlüsselsprache für die Webentwicklung PHP: Eine Schlüsselsprache für die Webentwicklung Apr 13, 2025 am 12:08 AM

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

Php gegen andere Sprachen: Ein Vergleich Php gegen andere Sprachen: Ein Vergleich Apr 13, 2025 am 12:19 AM

PHP eignet sich für die Webentwicklung, insbesondere für die schnelle Entwicklung und Verarbeitung dynamischer Inhalte, ist jedoch nicht gut in Anwendungen auf Datenwissenschaft und Unternehmensebene. Im Vergleich zu Python hat PHP mehr Vorteile in der Webentwicklung, ist aber nicht so gut wie Python im Bereich der Datenwissenschaft. Im Vergleich zu Java wird PHP in Anwendungen auf Unternehmensebene schlechter, ist jedoch flexibler in der Webentwicklung. Im Vergleich zu JavaScript ist PHP in der Back-End-Entwicklung präziser, ist jedoch in der Front-End-Entwicklung nicht so gut wie JavaScript.

PHP vs. Python: Kernmerkmale und Funktionen PHP vs. Python: Kernmerkmale und Funktionen Apr 13, 2025 am 12:16 AM

PHP und Python haben jeweils ihre eigenen Vorteile und eignen sich für verschiedene Szenarien. 1.PHP ist für die Webentwicklung geeignet und bietet integrierte Webserver und reichhaltige Funktionsbibliotheken. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit prägnanter Syntax und einer leistungsstarken Standardbibliothek. Bei der Auswahl sollte anhand der Projektanforderungen festgelegt werden.

Auswirkungen von PHP: Webentwicklung und darüber hinaus Auswirkungen von PHP: Webentwicklung und darüber hinaus Apr 18, 2025 am 12:10 AM

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

PHP: Die Grundlage vieler Websites PHP: Die Grundlage vieler Websites Apr 13, 2025 am 12:07 AM

Die Gründe, warum PHP für viele Websites der bevorzugte Technologie -Stack ist, umfassen die Benutzerfreundlichkeit, die starke Unterstützung der Community und die weit verbreitete Verwendung. 1) Einfach zu erlernen und zu bedienen, geeignet für Anfänger. 2) eine riesige Entwicklergemeinschaft und eine reichhaltige Ressourcen haben. 3) in WordPress, Drupal und anderen Plattformen häufig verwendet. 4) Integrieren Sie eng in Webserver, um die Entwicklung der Entwicklung zu vereinfachen.

PHP vs. Python: Anwendungsfälle und Anwendungen PHP vs. Python: Anwendungsfälle und Anwendungen Apr 17, 2025 am 12:23 AM

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

See all articles