Überblick
Bubble -Sortierung ist ein einfacher Sortieralgorithmus. Es besucht wiederholt die zu sortierende Sequenz, vergleicht zwei Elemente gleichzeitig und tauscht sie aus, wenn sie falsch sind. Die Arbeit zum Besuch der Sequenz wird wiederholt, bis die Sequenz sortiert wurde. Der Ursprung dieses Algorithmus liegt daran, dass je kleiner das Element mit dem Beginn der Sequenz über den Austausch langsam "schwimmt".
Einfach gesagt, ist es:
Die Sortierung von Blasen ist mehr als größere Zeichen, die hinter dem Array versinken (können wie unten verstanden werden), und kleinere Zeichen schweben vorne (oben).
Intuitiver Interpretationsdiagramm:
Schritt
Vergleichen Sie benachbarte Elemente. Wenn der erste größer als der zweite ist, tauschen Sie sie gegen die beiden aus.
Führen Sie das gleiche Werk für jedes Paar benachbarte Elemente aus, beginnend vom ersten Paar bis zum letzten Paar am Ende. Zu diesem Zeitpunkt sollte das letzte Element die größte Zahl sein.
Wiederholen Sie die obigen Schritte für alle Elemente mit Ausnahme des letzten.
Wiederholen Sie die obigen Schritte für immer weniger Elemente jedes Mal, bis keine Zahlenpaare verglichen werden müssen.
Beispiel
Rohdaten:
3 5 2 6 2
Die erste Runde
Der Vergleich von 3 und 5, 5 ist größer als 3, kein Austausch 3 5 2 6 2 Vergleich 5 und 2, 5 ist größer als 2, Austauschposition 3 2 5 6 2 Vergleiche 5 und 6, 6 ist größer als 5, kein Austausch 3 2 5 6 2 Vergleichen Sie weiter 6 und 2, 6 ist größer als 2, Austauschposition 3 2 2 6 66 Sinke mit dem Ende, beide 2 tauchen beide nach oben auf (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) (vorne) () () () () ()af eil dies dies er austausch wird.
Runde 2
Vergleich 3 und 2, 3 ist größer als 2, Austauschposition 2 3 5 2 6 Vergleich 3 und 5, 5 ist größer als 3, kein Austausch 2 3 5 2 6 Vergleich 5 und 2, 5 ist größer als 2, Austauschposition 2 3 2 5 6 Nicht erforderlich, 5 und 6 zu vergleichen
Die dritte Runde
Vergleich 2 und 3, 3 ist größer als 2, kein Austausch von 2 2 2 5 6 Vergleich 3 und 2, 3 ist größer als 2, keine Notwendigkeit, die Austauschposition 2 2 3 5 6 zu vergleichen
Runde 4
Vergleichen Sie 2 und 2 ohne Austausch 2 2 3 5 6
Vier Runden enden
2 2 3 5 6
Code -Implementierung (Java)
Paket com.coder4j.main.arithMetion.sorting; öffentliche Klasse Bubble { / ** * Bubble Sort * * @param Array * @return * / public static int [] sort (int [] Array) {int temp; // Die erste Schichtschleife zeigt die Anzahl der verglichenen Runden, wie z. B. Längenelemente, und die Anzahl der verglichenen Runden ist Länge -1 (keine Notwendigkeit, mit sich selbst zu vergleichen) für (int i = 0; i <array.length - 1; i ++) {System.out.println ("Thread" + (i + 1) + "Wheel Start"); // Die zweite Schleifeschicht, jede benachbarte zwei Vergleiche nimmt einmal ab und die Anzahl der Male nimmt mit zunehmender Anzahl der Runden ab. Jede Runde ermittelt die größte, und es besteht nicht erforderlich, die größte für (int j = 0; j <array.length - 1 - i; j ++) {if (Array [j+1] <Array [j]) {temp = Array [j] zu vergleichen; Array [j] = Array [j + 1]; Array [j + 1] = temp; } System.out.println ("th" + (i + 1) + "runde" th " + (j + 1) +" compare: "); für (int k: array) {System.out.print (k +" ");} system.out.println ();} system.println (" Ergebnis: "); } System.out.println ();Testergebnisse Ergebnisse:
2 3 5 6 6 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 3 3 3 5 6 4 3 3 5 6 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 4 4 4 5 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 Endergebnis 2 2 3 5 6
Nach dem Test stimmt es mit den Ergebnissen im Beispiel überein.