Mathematik AG Geschickt gesucht ist halb gefunden: Suchen und Sortieren mit Mathe Habe ich die 7? 4 5 1 3 8 6 1 9 2 7 JA! Habe ich die 7? 4 5 1 3 8 6 1 9 2 NEIN! 3 Unser Problem JA 4 5 1 3 8 6 1 9 2 7 NEIN 4 5 1 3 8 6 1 9 2 3 Wir müssen im schlechtesten Fall alle Karten anschauen! Geht das besser? 4 5 1 3 8 6 Hilft das, wenn wir wissen, dass die Zahlen nach Größe angeordnet sind? 1 9 2 3 Geht das besser? 1 1 2 3 3 4 Hilft das, wenn wir wissen, dass die Zahlen nach Größe angeordnet sind? 5 6 8 9 Such-Wettrennen! Wer sucht am schnellsten? Die binäre Suche 4 Zahlen 1 Gesucht: 7 1 2 5 Zahlen 3 3 4 5 6 8 Hier ist so etwa die Mitte 9 Die binäre Suche 4 Zahlen 1 1 2 5 Zahlen 3 3 4 5 6 Gesucht: 7 Wir haben die 7 noch nicht gefunden, aber… 8 9 Die binäre Suche 4 Zahlen 1 Gesucht: 7 1 2 5 Zahlen 3 Alle Zahlen hier sind kleiner oder gleich der 3 3 4 5 6 8 9 Alle Zahlen hier größer oder gleich der 3 Wir haben die 7 noch nicht gefunden, aber… Die binäre Suche 4 Zahlen 1 Gesucht: 7 1 2 5 Zahlen 3 Alle Zahlen hier sind kleiner oder gleich der 3 3 4 5 6 8 9 Alle Zahlen hier größer oder gleich der 3 Wo kann die 7 nur sein? 3 < 7: also ist die 7 höchstens hier Die binäre Suche 4 Zahlen 1 Gesucht: 7 1 2 5 Zahlen 3 Alle Zahlen hier sind kleiner oder gleich der 3 3 4 5 6 8 9 Alle Zahlen hier größer oder gleich der 3 Wo kann die 7 nur sein? 3 < 7: also ist die 7 höchstens hier Die binäre Suche 5 Zahlen 4 Gesucht: 7 5 6 8 9 Alle Zahlen hier größer oder gleich der 3 Von 10 Zahlen haben wir unseren „Suchraum“ auf 5 Zahlen verkleinert (halbiert!) Wie geht es jetzt weiter? Die binäre Suche 5 Zahlen 4 Gesucht: 7 5 6 Hier ist sogar genau die Mitte 8 9 Die binäre Suche 4 Gesucht: 7 Alle Zahlen hier sind kleiner oder gleich der 6 5 6 8 9 Alle Zahlen hier größer oder gleich der 6 Die binäre Suche 8 Gesucht: 7 Hier ist etwa die Mitte 9 Die binäre Suche 8 Gesucht: 7 9 Die binäre Suche 8 Gesucht: 7 Konstatiere: Die 7 ist nicht dabei! Unser Suchaufwand 10 Zahlen 5 Zahlen 2 Zahlen 1 Zahl 1 1 2 3 3 4 4 Mit jedem „Test“ halbiert sich unsere Zahlenmenge mindestens. 5 5 6 6 8 9 8 9 8 9 8 Vergleich der beiden Suchmethoden Zahlen Sequentielle Suche Binäre Suche 1 2 4 8 16 32 64 Anzahl Testschritte für die beiden Methoden (im schlechtesten Fall) Vergleich der beiden Suchmethoden Zahlen Sequentielle Suche 1 1 2 2 4 4 8 8 16 16 32 32 64 64 Binäre Suche Anzahl Testschritte für die beiden Methoden (im schlechtesten Fall) Vergleich der beiden Suchmethoden Zahlen 1 2 4 Wenn sich die Sequentielle Anzahl der Zahlen Suche 1 steigt die verdoppelt, 2 nur um Testanzahl eins an! 4 Binäre Suche 1 2 3 8 8 4 16 16 5 32 32 6 64 64 7 Anzahl Testschritte für die beiden Methoden (im schlechtesten Fall) Laufzeitvergleich 9000 6750 Sequentiell Binär 4500 2250 0 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 Sortiert ist gut! Wenn die Zahlen sortiert sind, können wir schnell suchen! Aber: Wie sortiere ich die Zahlen eigentlich (schnell)? GUT! 1 1 2 3 3 4 5 6 8 9 1 5 2 4 3 3 1 6 8 9 Nicht so gut! Sortier-Wettrennen! Wer sortiert am schnellsten? 8 5 2 4 3 3 1 6 1 9 1 1 2 3 3 4 5 6 8 9 Einfüge-Sortieren 8 5 2 4 3 3 1 6 1 9 Unsortiert Wir fügen immer die aktuelle Zahl an die richtige Stelle der bereits sortierten Zahlen ein. Einfüge-Sortieren 8 5 2 4 3 3 1 6 1 9 Unsortiert Wir fügen immer die aktuelle Zahl an die richtige Stelle der bereits sortierten Zahlen ein. Einfüge-Sortieren 5 8 Sortiert 2 4 3 3 1 6 1 9 Unsortiert Wir fügen immer die aktuelle Zahl an die richtige Stelle der bereits sortierten Zahlen ein. Einfüge-Sortieren 5 8 Sortiert 2 4 3 3 1 6 1 9 Unsortiert Wir fügen immer die aktuelle Zahl an die richtige Stelle der bereits sortierten Zahlen ein. Einfüge-Sortieren 2 5 Sortiert 8 4 3 3 1 6 1 9 Unsortiert Wir fügen immer die aktuelle Zahl an die richtige Stelle der bereits sortierten Zahlen ein. Einfüge-Sortieren 2 5 Sortiert 8 4 3 3 1 6 1 9 Unsortiert Wir fügen immer die aktuelle Zahl an die richtige Stelle der bereits sortierten Zahlen ein. Einfüge-Sortieren 4 2 5 Sortiert 8 3 3 1 6 1 9 Unsortiert Wir fügen immer die aktuelle Zahl an die richtige Stelle der bereits sortierten Zahlen ein. Einfüge-Sortieren 2 4 Sortiert 5 8 3 3 1 6 1 9 Unsortiert Und so geht das dann weiter… Wir fügen immer die aktuelle Zahl an die richtige Stelle der bereits sortierten Zahlen ein. Sortierverfahren • Einfüge-Sortieren (Insertion-Sort) • Blubber-Sortieren (Bubble-Sort) • Misch-Sortieren (Merge-Sort) • Haufen-Sortieren (Heap-Sort) • Schnell-Sortieren (Quick-Sort) Sortieren mit Haufen Ein Heap (Haufen) hilft beim Sortieren Kleinstes Element (=Minimum) „Höhe“ log n 2 5 6 9 10 17 14 18 7 19 14 7 Sortieren mit Haufen Ein Heap (Haufen) hilft beim Sortieren Kleinstes Element (=Minimum) „Höhe“ log n 2 5 6 14 7 9 10 17 ???? 18 19 14 7 Sortieren mit Haufen Ein Heap (Haufen) hilft beim Sortieren Kleinstes Element (=Minimum) „Höhe“ log n 14 5 6 2 14 7 9 10 17 ???? 18 19 7 Sortieren mit Haufen Ein Heap (Haufen) hilft beim Sortieren Kleinstes Element (=Minimum) „Höhe“ log n 5 14 6 2 14 7 9 10 17 ???? 18 19 7 Sortieren mit Haufen Ein Heap (Haufen) hilft beim Sortieren Kleinstes Element (=Minimum) „Höhe“ log n 5 9 10 17 2 14 ???? Alles wieder OK! 6 7 14 18 19 7 Fazit • Suchen geht mit binärer Suche in „logarithmischer Zeit“ • Einfüge-Sortieren benötigt Zeit • Haufen-Sortieren benötigt Zeit