Überblick
Schnelles Sortieren ist ein Sortieralgorithmus, der von Tony Hall entwickelt wurde. In der durchschnittlichen Situation erfordert die Reihenfolge von N -Elementen einen Vergleich (nLogn). Tatsächlich ist die schnelle Sortierung in der Regel erheblich schneller als andere (NLOGN) -Algorithmen, da die innere Schleife bei den meisten Architekturen effizient implementiert werden kann und in den meisten Daten in der realen Welt die Auswahl des Designs bestimmen und die Möglichkeit von quadratischen Begriffen verringern kann, die Zeit erfordern.
Schnellsortieren, teilen Sie die Datensätze, die in zwei unabhängigen Teilen sortiert werden sollen, durch eine Bestellung, bei der die Schlüsselwörter einiger Datensätze kleiner sind als die Schlüsselwörter des anderen Teils, und dann werden die beiden Datensätze weiterhin separat sortiert, um den Zweck der Bestellung der gesamten Sequenz zu erreichen.
Bildillustration:
Schritt
Bei der Auswahl eines Benchmark-Elements wird das erste Element oder das letzte Element normalerweise ausgewählt, um die Datensätze zu unterteilen, die in zwei unabhängige Teile sortiert werden, durch ein Sortiment, wobei die Elementwerte einiger Datensätze kleiner sind als die Benchmark-Elementwerte. Die im anderen Teil aufgezeichneten Elemente sind größer als der Referenzwert.
Beispiel
Rohdaten:
3 5 2 6 2
Wählen Sie 3 als Benchmark aus
Die erste Runde
Von rechts nach links, um etwas kleineres als 3, 2 Übereinstimmungen zu finden und einmal 2 und 3 2 5 2 6 3 einzustellen, und die Richtung der Suche wird von links nach rechts umgekehrt, um etwas mehr als 3, 5 Übereinstimmungen zu finden, und 2 3 2 6 5 einstellen, dann von rechts nach links etwas kleiner als 3, 2 Übereinstimmungen und 2 2 3 6 5 -Runde einstellen
Runde 2
Die gleiche Methode wie oben wird für [2 2] und 2 2 2 3 6 5 durchgeführt
Die dritte Runde
Die gleiche Methode wie oben wird für [6 5] und 2 2 2 5 6 durchgeführt
Endergebnis
2 2 3 5 6
Code -Implementierung (Java)
Paket com.Coder4j.main.arithMetic.Sorting; temp; // Die Matching, Switch System.out.println ("Shift" + Array [A] + "und" + Array [B] + ", Get"); ("Wurf in Arbeit" + Mark + "Radtrennung, Bereich:" + Low + "-" + hoch); hoch) {while (niedrig && Array [High]> = Basis) {High--; + Basis + "Große Zeigeränderung:" + Low + "-" High); } / ** * Schnelles Sortieren des Arrays, rekursiv aufrufen } /** * Schnelle Sorte * * @param Array * @return */ public int [] sortieren (int [] Array) {return quicksort (Array, Array.Length - 1); ");}}}Testergebnisse Ergebnisse:
Wählen Sie alle in die Noten. Die Trennung beträgt 2 und 3. Die zweite Runde der Trennung beträgt 2 und 3. Die zweite Runde der Trennung beträgt 2 und 3. Die zweite Runde der Trennung beträgt 2 und 3. Die zweite Runde der Trennung beträgt 2 und 3. Die zweite Runde der Trennung beträgt 2 und 2 5. Das letzte Ergebnis ist 2 und 3 sind 5. 6. Das letzte Ergebnis ist 2 2 3 5 6.
Nach dem Test stimmt es mit den Ergebnissen im Beispiel überein.