Bubble Sort Algorithmus mit Python Beispiel mit Listenverwendung
โก Intelligente Zusammenfassung
BubblDie Sortierfunktion ordnet Listenelemente in aufsteigender Reihenfolge an, indem sie wiederholt benachbarte Werte vergleicht und vertauscht.ping Sortieren Sie die Datensรคtze, wenn das linke Element grรถรer ist. Diese einfache Vergleichssortierung eignet sich fรผr kleine oder nahezu sortierte Datensรคtze und vermittelt auf effektive Weise die grundlegende Sortierlogik.

Non-Profit Bubble Sortieren?
Bubble Sortieren Der Algorithmus ordnet Listenelemente aufsteigend, indem er zwei benachbarte Werte vergleicht. Ist der erste Wert grรถรer als der zweite, rรผckt der erste Wert an die Stelle des zweiten und umgekehrt. Ist der erste Wert kleiner als der zweite, findet kein Tausch statt.ping erledigt.
Dieser Vorgang wird wiederholt, bis alle Werte einer Liste verglichen und gegebenenfalls ausgetauscht wurden. Jede Iteration wird normalerweise als Durchgang bezeichnet. Die Anzahl der Durchgรคnge bei einer Blasensortierung entspricht der Anzahl der Elemente in einer Liste minus eins.
In dieser Bubble Sortieren in Python Lernprogramm Sie lernen das Problem kennen, das es lรถst, seine optimierte Form, eine schrittweise visuelle Anleitung und ein funktionierendes Beispiel. Python Programm und seine Leistungsmerkmale.
Implementierung der Bubble-Sort-Algorithmus
Wir werden die Implementierung in drei (3) Schritte unterteilen, nรคmlich das Problem, die Lรถsung und den Algorithmus, mit dem wir Code fรผr jede beliebige Sprache schreiben kรถnnen.
Das Problem
Eine Liste von Gegenstรคnden ist in zufรคlliger Reihenfolge gegeben, und wir mรถchten die Gegenstรคnde in eine geordnete Reihenfolge bringen.
Betrachten Sie die folgende Liste:
[21, 6, 9, 33, 3]
Die Lรถsung
Iteriere durch die Liste, vergleiche zwei benachbarte Elemente und tausche sie aus.ping sie, wenn der erste Wert hรถher ist als der zweite Wert.
Das Ergebnis sollte wie folgt aussehen:
[3, 6, 9, 21, 33]
Algorithmus
Der Bubble-Sort-Algorithmus funktioniert wie folgt:
Schritt 1) Ermitteln Sie die Gesamtanzahl der Elemente. Ermitteln Sie die Gesamtanzahl der Eintrรคge in der gegebenen Liste.
Schritt 2) Bestimme die Anzahl der รคuรeren Durchlรคufe (n โ 1). Ihre Lรคnge ist die Liste minus eins.
Schritt 3) Fรผhre den inneren Durchlauf (n โ 1) Mal fรผr den ersten รคuรeren Durchlauf aus. Ermittle den Wert des ersten Elements und vergleiche ihn mit dem Wert des zweiten Elements. Ist der zweite Wert kleiner als der erste, vertausche die Positionen.
Schritt 4) Wiederhole Schritt 3, bis du den รคuรersten Durchlauf (n โ 1) erreicht hast. Nimm das nรคchste Element der Liste und wiederhole dann den Vorgang aus Schritt 3, bis alle Werte in der korrekten aufsteigenden Reihenfolge angeordnet sind.
Schritt 5) Gib das Ergebnis zurรผck, sobald alle Durchlรคufe abgeschlossen sind. Gib die Ergebnisse der sortierten Liste zurรผck.
Schritt 6) Algorithmus optimieren.
Vermeiden Sie unnรถtige innere Durchgรคnge, wenn die Liste oder angrenzende Werte bereits sortiert sind. Wenn die bereitgestellte Liste beispielsweise bereits Elemente enthรคlt, die in aufsteigender Reihenfolge sortiert wurden, kรถnnen wir die Schleife vorzeitig unterbrechen.
Optimiert Bubble-Sort-Algorithmus
Standardmรครig ist der Algorithmus fรผr Bubblesort in Python vergleicht alle Elemente in der Liste, unabhรคngig davon, ob die Liste bereits sortiert ist oder nicht. Wenn die angegebene Liste bereits sortiert ist, ist der Vergleich aller Werte eine Verschwendung von Zeit und Ressourcen.
Die Optimierung der Blasensortierung hilft uns, unnรถtige Iterationen zu vermeiden und Zeit und Ressourcen zu sparen.
Wenn beispielsweise das erste und das zweite Element bereits sortiert sind, ist es nicht erforderlich, die restlichen Werte zu durchlaufen. Die Iteration wird beendet und die nรคchste gestartet, bis der Prozess wie unten gezeigt abgeschlossen ist. Bubble Sortierbeispiel.
Die Optimierung erfolgt in folgenden Schritten:
Schritt 1) Erstelle eine Flag-Variable, die รผberwacht, ob ein Tauschvorgang stattfindet.ping ist in der inneren Schleife aufgetreten.
Schritt 2) Wenn die Werte ihre Positionen getauscht haben, fahre mit der nรคchsten Iteration fort.
Schritt 3) Falls die Werte ihre Positionen nicht getauscht haben, beenden Sie die innere Schleife und fahren Sie mit der รคuรeren Schleife fort.
Eine optimierte Blasensortierung ist effizienter, da sie nur die notwendigen Schritte ausfรผhrt und diejenigen รผberspringt, die nicht erforderlich sind.
Visuelle Darstellung
Die folgenden Bilder veranschaulichen, wie der Bubble-Sort-Algorithmus die Werte einer Liste von fรผnf Elementen durchlรคuft, um sie zu sortieren.
Das folgende Bild zeigt die unsortierte Liste:
Erste Iteration
Schritt 1)
Die Werte 21 und 6 werden verglichen, um zu prรผfen, welcher Wert grรถรer als der andere ist.
Da 21 grรถรer als 6 ist, nimmt 21 die Position ein, die zuvor von 6 besetzt war, wรคhrend 6 die Position einnimmt, die zuvor von 21 besetzt war.
Unsere geรคnderte Liste sieht jetzt wie oben aus.
Schritt 2)
Die Werte 21 und 9 werden verglichen.
21 ist grรถรer als 9, also tauschen wir die Positionen von 21 und 9.
Die neue Liste sieht nun wie oben aus.
Schritt 3)
Die Werte 21 und 33 werden verglichen, um den grรถรeren Wert zu ermitteln.
Der Wert 33 ist grรถรer als 21, daher kein Tausch.ping stattfindet.
Schritt 4)
Die Werte 33 und 3 werden verglichen, um den grรถรeren Wert zu ermitteln.
Der Wert 33 ist grรถรer als 3, daher tauschen wir ihre Positionen.
Die sortierte Liste am Ende der ersten Iteration sieht aus wie die obige.
Zweite Iteration
Die neue Liste nach der zweiten Iteration lautet wie folgt:
Dritte Iteration
Die neue Liste nach der dritten Iteration lautet wie folgt:
Vierte Iteration
Die neue Liste nach der vierten Iteration lautet wie folgt:
Python Beispiele
Der folgende Code zeigt, wie die implementiert wird Bubble Sortieralgorithmus in Python.
def bubbleSort(theSeq): n = len(theSeq) for i in range(n - 1): flag = 0 for j in range(n - 1): if theSeq[j] > theSeq[j + 1]: tmp = theSeq[j] theSeq[j] = theSeq[j + 1] theSeq[j + 1] = tmp flag = 1 if flag == 0: break return theSeq el = [21, 6, 9, 33, 3] result = bubbleSort(el) print(result)
Ausfรผhren des obigen Bubblesort-Programms in Python fรผhrt zu folgenden Ergebnissen:
[3, 6, 9, 21, 33]
Code Erlรคuterung
Die Erklรคrung fรผr die Python BubblDer Programmcode fรผr e Sort lautet wie folgt:
HIER,
- Definiert eine Funktion bubbleSort, die einen Parameter theSeq akzeptiert. Der Code gibt nichts aus.
- Ermittelt die Lรคnge des Arrays und weist den Wert einer Variablen n zu. Der Code gibt nichts aus.
- Es wird eine for-Schleife gestartet, die den Bubble-Sort-Algorithmus (n โ 1) Mal ausfรผhrt. Dies ist die รคuรere Schleife. Der Code gibt keine Ausgabe aus.
- Definiert eine Flag-Variable, die angibt, ob ein Tausch stattgefunden hat oder nicht. Dies dient der Optimierung. Der Code gibt keine Ausgabe aus.
- Startet die innere Schleife, die alle Werte in der Liste vom ersten bis zum letzten vergleicht. Der Code gibt nichts aus.
- Verwendet die if-Anweisung, um zu prรผfen, ob der Wert auf der linken Seite grรถรer ist als der Wert auf der unmittelbar rechten Seite. Der Code gibt nichts aus.
- Weist der temporรคren Variable tmp den Wert von theSeq[j] zu, falls die Bedingung als wahr ausgewertet wird. Der Code gibt keine Ausgabe aus.
- Der Wert von theSeq[j + 1] wird der Position theSeq[j] zugewiesen. Der Code gibt keine Ausgabe aus.
- Der Wert der Variablen tmp wird der Position theSeq[j + 1] zugewiesen. Der Code gibt nichts aus.
- Der Flag-Variablen wird der Wert 1 zugewiesen, um anzuzeigen, dass ein Tausch stattgefunden hat. Der Code gibt keine Ausgabe aus.
- Verwendet eine if-Anweisung, um zu prรผfen, ob der Wert der Variablen flag 0 ist. Der Code gibt nichts aus.
- Wenn der Wert 0 ist, rufen wir die Break-Anweisung auf, die die innere Schleife verlรคsst.
- Gibt den Wert von theSeq zurรผck, nachdem es sortiert wurde. Der Code gibt die sortierte Liste aus.
- Definiert eine Variable el, die eine Liste von Zufallszahlen enthรคlt. Der Code gibt nichts aus.
- Weist den Wert der Funktion bubbleSort einer Variablen result zu.
- Gibt den Wert der Variablen result aus.
BubblVorteile von e sort
Im Folgenden werden einige Vorteile des Bubble-Sort-Algorithmus aufgefรผhrt:
- Es ist leicht zu verstehen.
- Es funktioniert sehr gut, wenn die Liste bereits oder fast sortiert ist.
- Es ist kein umfangreicher Speicher erforderlich.
- Es ist einfach, den Code fรผr den Algorithmus zu schreiben.
- Der Platzbedarf ist im Vergleich zu anderen Sortieralgorithmen minimal.
BubblNachteile der E-Sortierung
Im Folgenden werden einige Nachteile des Bubble-Sort-Algorithmus aufgefรผhrt:
- Beim Sortieren groรer Listen ist die Leistung nicht gut. Es kostet zu viel Zeit und Ressourcen.
- Es wird hauptsรคchlich fรผr akademische Zwecke und nicht fรผr Anwendungen in der realen Welt verwendet.
- Die Anzahl der zum Sortieren der Liste erforderlichen Schritte liegt in der Grรถรenordnung n2.
Komplexitรคtsanalyse von Bubble Sortieren
Es gibt drei Arten von Komplexitรคt:
1) Komplexitรคt sortieren
Die Sortierkomplexitรคt gibt an, wie viel Zeit und Speicherplatz zum Sortieren einer Liste benรถtigt werden. Der Bubblesort-Algorithmus benรถtigt (n โ 1) Iterationen, um die Liste zu sortieren, wobei n die Gesamtzahl der Elemente in der Liste ist.
2) Zeitliche Komplexitรคt
Die Zeitkomplexitรคt des Bubblesort betrรคgt O(n2).
Die zeitlichen Komplexitรคten kรถnnen wie folgt kategorisiert werden:
- Schlimmsten Fall โ hier erfolgt die Auflistung in absteigender Reihenfolge. Der Algorithmus fรผhrt die maximale Anzahl von Ausfรผhrungen durch, die als [Big-O] O(n) ausgedrรผckt wird2).
- bester Fall Dies tritt auf, wenn die bereitgestellte Liste bereits sortiert ist. Der Algorithmus fรผhrt die minimale Anzahl an Ausfรผhrungen durch, die als [Big-Omega] ฮฉ(n) ausgedrรผckt wird.
- Durchschnittlicher Fall Dies tritt auf, wenn die Liste in zufรคlliger Reihenfolge vorliegt. Die durchschnittliche Komplexitรคt wird als [Big-theta] โ(n) dargestellt.2).
3) Raumkomplexitรคt
Die Speicherkomplexitรคt misst den zusรคtzlichen Speicherplatz, der zum Sortieren der Liste benรถtigt wird. Der Bubblesort benรถtigt lediglich einen (1) zusรคtzlichen Speicherplatz fรผr die temporรคre Variable, die zum Vertauschen verwendet wird.ping Daher hat es eine Speicherkomplexitรคt von O(1).
















