Lineare Suche, binäre Suche und Hashing — drei fundamentale Strategien zum Finden von Daten, visuell erklärt und in Python implementiert.
Klasse 11 · Informatik · 90 minModul 01
Wie findet man einen bestimmten Wert in einer Datensammlung? Es gibt drei grundsätzlich verschiedene Ansätze — jeder mit eigenen Stärken, Schwächen und Voraussetzungen.
Element für Element durchgehen, bis der Suchwert gefunden wird — oder das Ende erreicht ist.
↓ Details anzeigen
Prinzip: Vergleiche nacheinander jedes Element der Liste mit dem Suchwert. Beim ersten Treffer → Abbruch. Kein Treffer nach dem letzten Element → nicht gefunden.
Voraussetzung: Keine! Die Daten müssen nicht sortiert sein.
Zeitkomplexität: O(n) — im schlimmsten Fall muss jedes Element geprüft werden.
Analogie: Wie wenn du ein Buch in einem unsortieren Bücherregal suchst — du musst jedes Buch einzeln anschauen.
In jedem Schritt die Hälfte der verbleibenden Elemente ausschließen — extrem schnell bei sortierten Daten.
↓ Details anzeigen
Prinzip: Vergleiche den Suchwert mit dem mittleren Element. Ist er kleiner → suche links weiter. Ist er größer → suche rechts weiter. Wiederhole, bis gefunden oder Bereich leer.
Voraussetzung: Die Daten müssen sortiert sein!
Zeitkomplexität: O(log n) — bei jeder Iteration halbiert sich der Suchbereich.
Analogie: Wie das Nachschlagen im Telefonbuch — man schlägt in der Mitte auf und weiß sofort, in welcher Hälfte der Name steckt.
Den Speicherort direkt berechnen — Zugriff in konstanter Zeit, unabhängig von der Datenmenge.
↓ Details anzeigen
Prinzip: Eine Hashfunktion berechnet aus dem Suchwert direkt den Index (die Position) in einer Tabelle. Man greift also sofort auf die richtige Stelle zu, ohne zu suchen.
Voraussetzung: Eine geeignete Hashfunktion und eine Hashtabelle (Array fester Größe). Kollisionen müssen behandelt werden.
Zeitkomplexität: O(1) im Durchschnitt — Zugriff in konstanter Zeit!
Kollision: Wenn zwei Werte denselben Index berechnen (z.B. 15 % 10 = 5 und 25 % 10 = 5). Lösungen: Verkettung (Liste pro Bucket) oder offene Adressierung (nächster freier Platz).
Analogie: Wie ein Spind-System — deine Spindnummer ergibt sich direkt aus deinem Nachnamen.
Modul 02
Beobachte Schritt für Schritt, wie die drei Suchverfahren arbeiten. Wähle einen Suchwert und verfolge jeden Vergleich live.
Hashfunktion: h(x) = x mod 10 (Tabellengröße = 10)
Modul 03
Teste dein Verständnis der Suchverfahren mit diesen interaktiven Übungen.
Verschiebe den Regler und beobachte, wie sich die maximale Schrittzahl bei den drei Verfahren verändert.
Klicke auf eine Aussage, um die Antwort aufzudecken.
Bringe die Schritte der binären Suche in die richtige Reihenfolge! Ziehe die Elemente mit der Maus (oder per Touch).
Führe den Python-Code im Kopf aus. Wie viele Vergleiche braucht die binäre Suche, um den Wert 67 in der Liste zu finden? Trage deine Antwort ein.
Hake ab, was du bereits verstanden hast:
0 / 8 erledigt
Modul 04
20 Fragen in vier Schwierigkeitsstufen — teste dein Wissen über Suchverfahren.
Modul 05
Klicke auf eine Karte, um die Definition aufzudecken.
Diskussion im Kurs
„Hashing hat eine Zeitkomplexität von O(1) — ist es also immer besser als binäre Suche? Diskutiert Situationen, in denen binäre Suche trotzdem vorzuziehen wäre. Denkt dabei an Speicherverbrauch, sortierte Ausgabe, Worst-Case-Verhalten und die Wahl der Hashfunktion."