Heim > Artikel > Web-Frontend > Knackender Quick-Sort-Algorithmus: Von der Theorie zur Praxis in wenigen Minuten
Quicksort ist einer der schnellsten Sortieralgorithmen. Es nimmt ein Array von Werten, wählt einen der Werte als „Pivot“-Element und verschiebt die anderen Werte so, dass niedrigere Werte links vom Pivot-Element und höhere Werte rechts davon liegen.
Quick Sort gilt als einer der elegantesten und effizientesten Sortieralgorithmen in der Welt der Algorithmen. Im Gegensatz zu einfacheren Algorithmen wie Bubble Sort oder Selection Sort verwendet Quick Sort eine ausgefeilte Divide-and-Conquer-Strategie, die es in der Praxis deutlich schneller macht. Während Merge Sort auch das Divide-and-Conquer-Prinzip verwendet, führt der einzigartige Partitionierungsansatz von Quick Sort häufig zu einer besseren Leistung und Speichernutzung.
Durchschnittliche Zeitkomplexität: O(n log n)
Zeitkomplexität im schlimmsten Fall: O(n²)
Raumkomplexität: O(log n)
Quick Sort ist ein hocheffizienter Sortieralgorithmus, der ein „Pivot“-Element aus dem Array auswählt und die anderen Elemente in zwei Unterarrays aufteilt, je nachdem, ob sie kleiner oder größer als der Pivot sind. Im Gegensatz zu Merge Sort, das zuerst teilt und später kombiniert, führt Quick Sort die Sortierung während des Partitionierungsprozesses durch.
Betrachten Sie diesen Vergleich mit anderen Sortieralgorithmen:
Algorithm | Time Complexity (Average) | Space Complexity | In-Place? |
---|---|---|---|
Quick Sort | O(n log n) | O(log n) | Yes |
Merge Sort | O(n log n) | O(n) | No |
Bubble Sort | O(n²) | O(1) | Yes |
Selection Sort | O(n²) | O(1) | Yes |
Heap Sort | O(n log n) | O(1) | Yes |
Bevor wir uns mit der JavaScript-Implementierung von Schnellsortierungsalgorithmen befassen, gehen wir Schritt für Schritt vor, um zu verstehen, wie der Algorithmus funktioniert, indem wir ein einfaches Zahlenarray in nur vier einfachen Schritten manuell sortieren.
Die Schnellsortierung kann in vier einfache Schritte unterteilt werden:
- Wählen Sie ein Pivot-Element aus dem Array. Dieses Element kann das erste, das letzte, das mittlere oder sogar ein zufälliges Element aus der Liste/dem Array sein.
- Ordnen Sie das Array neu an, sodass alle Elemente kleiner als der Pivot auf der linken Seite und alle Elemente größer auf der rechten Seite liegen.
- Tauschen Sie das Pivot-Element mit dem ersten Element der größeren Werte aus, sodass sich der Pivot in der Mitte befindet.
- Wenden Sie dieselben Operationen rekursiv auf die Unterarrays links und rechts vom Pivot an.
Wenden wir diese Schritte auf ein echtes Array an. Sollen wir?
Anfängliches Array: [3, 6, 2, 7, 1]
Nachdem wir alle Unterarrays sortiert haben, erhalten wir das endgültige sortierte Array:
Sortiertes Array: [1, 2, 3, 6, 7]
Unten finden Sie die beste Veranschaulichung, wie das im wirklichen Leben funktioniert:
Die zeitliche Komplexität von Quick Sort variiert je nach Pivot-Auswahl:
Best Case (O(n log n)):
Durchschnittlicher Fall (O(n log n)):
Worst Case (O(n²)):
Die Raumkomplexität von Quick Sort beträgt O(log n), weil:
function quickSort(arr) { // Base case: arrays with length 0 or 1 are already sorted if (arr.length <= 1) return arr; // Helper function to swap elements const swap = (i, j) => { [arr[i], arr[j]] = [arr[j], arr[i]]; }; // Partition function using Lomuto's partition scheme function partition(low, high) { const pivot = arr[high]; let i = low - 1; for (let j = low; j < high; j++) { if (arr[j] <= pivot) { i++; swap(i, j); } } swap(i + 1, high); return i + 1; } // Main quickSort function implementation function quickSortHelper(low, high) { if (low < high) { const pivotIndex = partition(low, high); quickSortHelper(low, pivotIndex - 1); // Sort left side quickSortHelper(pivotIndex + 1, high); // Sort right side } } quickSortHelper(0, arr.length - 1); return arr; }
Quick Sort ist aufgrund seiner Effizienz und Sortierung vor Ort eine beliebte Wahl. Es übertrifft einfachere Algorithmen wie Bubble Sort und Selection Sort mit seiner O(n log n)-Durchschnittsleistung und der geringen Platzkomplexität.
Wichtige Erkenntnisse:
Um sicherzustellen, dass Sie keinen Teil dieser Serie verpassen und um mit mir in Kontakt zu treten, um mehr darüber zu erfahren
Diskussionen über Softwareentwicklung (Web, Server, Mobil oder Scraping/Automatisierung), Daten
Strukturen und Algorithmen und andere spannende Technologiethemen, folgen Sie mir auf:
Bleiben Sie dran und viel Spaß beim Programmieren ???
Das obige ist der detaillierte Inhalt vonKnackender Quick-Sort-Algorithmus: Von der Theorie zur Praxis in wenigen Minuten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!