Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:sortieren:bubblesort [24.01.2022 22:15] – [Implementation des Algorithmus] sbel | faecher:informatik:oberstufe:algorithmen:sortieren:bubblesort [26.01.2022 18:05] (aktuell) – gelöscht sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Bubble Sort ====== | ||
- | Oje, Willi hat seine Mistkugeln auf offenem Feld aufgereiht. Ein heftiger | ||
- | Windstoss und die Kugeln rollen davon und liegen schon wieder in einem | ||
- | Durcheinander. Also nochmals sortieren. Willi ist noch ganz erschöpft von | ||
- | seiner ersten Sortier-Aktion. Vor allem das Suchen der " | ||
- | war sehr anstrengend! Er musste dabei immer die ganze Kugelreihe | ||
- | überblicken. | ||
- | |||
- | Gut, ich machs nochmals, sagt er sich, aber diesmal ein | ||
- | bisschen systematischer. Er sucht die " | ||
- | nach dem Zufallsprinzip, | ||
- | vergleicht er immer zwei benachbarte Kugeln. Sobald er zwei Kugeln mit falscher | ||
- | Reihenfolge gefunden hat, vertauscht er diese. Nachdem er die ganze Reihe so abgearbeitet | ||
- | hat, beginnt er wieder vorn vorne, d.h. von links. Wenn es schon mit Zufall geklappt hat, denkt | ||
- | sich Willi, dann muss es doch mit System erst recht klappen. Vielleicht sogar noch schneller | ||
- | als vorher? Tatsächlich findet er nach einigen Durchgängen kein " | ||
- | |||
- | ===== Schritt für Schritt... ===== | ||
- | |||
- | |||
- | | **Erster Durchlauf: | ||
- | |**Zweiter Durchlauf: | ||
- | | **Dritter Durchlauf: | ||
- | |||
- | |||
- | Bei einem vierten Durchlauf würde man keine Vertauschung mehr benötigen - die Mistkugeln sind sortiert. | ||
- | |||
- | |||
- | <note tip>Wenn man sich anstelle der Mistkugeln Luftblasen in einem Aquarium vorstellt und das | ||
- | Ganze um 90° gegen den Uhrzeigersinn dreht, sieht man in Gedanken, wie die Luftblasen im | ||
- | Wasser aufsteigen. Zuerst die grösste ganz nach oben, dann die zweitgrösste usw. Die | ||
- | Vorstellung von den steigenden Luftblasen hat diesem Sortierverfahren seinen Namen | ||
- | gegeben: **BubbleSort** (bubble (engl.) = Blase).</ | ||
- | |||
- | {{.: | ||
- | |||
- | {{ .: | ||
- | |||
- | Beobachte die Postion der jeweils größten Kugeln, die noch nicht an ihrem endgültigen Platz sind - was fällt dir auf? | ||
- | |||
- | ===== Der Algorithmus ===== | ||
- | |||
- | Wir sehen im Beispiel oben sofort, dass die Reihe nach dem dritten Durchgang sortiert | ||
- | ist und wir damit fertig sind. Wie aber kann ein Programm herausfinden, | ||
- | sortiert ist? Um zu entscheiden, | ||
- | mehr gefunden wird, sind wir fertig. | ||
- | |||
- | Diese Überlegungen führen uns auf folgenden Algorithmus: | ||
- | |||
- | ^Schritt ^ Was ist zu tun? ^ | ||
- | |(1) |Wähle die ersten beiden Elemente von links.| | ||
- | |(2) |Ist beim gewählten Paar das linke Element grösser als das rechte? Wenn ja, vertausche die beiden.| | ||
- | |(3) |Hat es rechts des soeben untersuchten Paares noch weitere Kugeln? Wenn ja, wähle das nächste Paar benachbarter Elemente und gehe zu (2). | | ||
- | |(4) |Wir haben einen Durchgang beendet. Wurde in diesem Durchgang mindestens ein " | ||
- | |||
- | ===== Anwendung des Algorithmus auf das Eingangsbeispiel ===== | ||
- | {{ .: | ||
- | {{.: | ||
- | |||
- | * Schreibe stichwortartig in die Felder, welchen Schritt des Algorithmus man ausführt und was genau dabei gemacht wird. | ||
- | * Notiere die Zahlenreihe und markiere bei jedem Schritt, welche Zahlen dort betrachtet werden. | ||
- | |||
- | |||
- | Warum sind vier Durchläufe nötig? Erkläre! | ||
- | |||
- | ===== Implementation des Algorithmus ===== | ||
- | |||
- | {{.: | ||
- | |||
- | * Erstelle eine Methode '' | ||
- | * Zähle, wieviele Durchläufe durch alle Songs der ArrayList nötig sind, bis die Liste sortiert ist. | ||
- | * Lass dir die sortierte Liste ausgeben, um das Ergebnis zu kontrollieren. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | Weiter zu [[selectionsort|SelectionSort]]. |