Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:sortieren:bubblesort:start [26.01.2022 19:16] – sbel | faecher:informatik:oberstufe:algorithmen:sortieren:bubblesort:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ~~NOTOC~~ | ||
- | |||
- | ====== 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).</ | ||
- | |||
- | ---- | ||
- | {{: | ||
- | === (A1) === | ||
- | Sortiere auf einem Blatt Papier mit dem BubbleSort Verfahren die folgende Mistkugelreihe. Fertige eine Tabelle an, in der jeder Durchlauf des Sortierverfahrens zu erkennen ist, markiere die Vertauschungen.((Für die Tabelle kann man auch nur die Zahlen nehmen und die Mistkugeln weglassen...)) | ||
- | |||
- | {{ .: | ||
- | |||
- | 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 ===== | ||
- | {{ .: | ||
- | |||
- | {{: | ||
- | === (A2) === | ||
- | |||
- | In der Datei {{sortieren_bubble.pdf|}} {{sortieren_bubble.ods|(ODS)}} ist der erste Durchgang gemäß des Algorithmus notiert. Fülle die Tabelle vollständig aus: | ||
- | |||
- | |||
- | * 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 ===== | ||
- | {{: | ||
- | === (A3) === | ||
- | |||
- | * Erstelle eine Methode '' | ||
- | * Zähle, wie viele 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. | ||
- | |||