Informatik

Suchalgorithmus: Linear oder binär suchen

Suchalgorithmus: Linear oder binär suchen
Suchalgorithmus: Linear oder binär suchen
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Ein Suchalgorithmus ist eine eindeutige Schrittfolge, mit der du ein bestimmtes Element in einer Datenmenge findest oder feststellst, dass es fehlt. Welche Suche passt, hängt vor allem davon ab, ob die Daten sortiert sind: Die lineare Suche funktioniert immer, die schnellere binäre Suche braucht eine sortierte Liste.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Was tut ein Suchalgorithmus?

Stell dir eine Liste mit Spielernamen vor. Die Eingabe besteht aus der Liste und dem gesuchten Namen. Der Algorithmus prüft nach festgelegten Regeln Listenelemente. Seine Ausgabe ist entweder die Fundstelle oder die Aussage „nicht enthalten“.

Definition

Suchalgorithmus

Ein Suchalgorithmus ist ein Verfahren, das Daten systematisch nach einem Zielwert durchsucht. Jeder Vergleich fragt: „Ist dieses Element der Zielwert?“ Je nach Verfahren entscheidet das Ergebnis auch, wo weitergesucht wird.

Für die Wahl des Verfahrens sind drei Fragen wichtig:

  1. Sind die Daten sortiert?
  2. Wie groß ist die Datenmenge?
  3. Lohnt sich der Aufwand, die Daten vor der Suche zu sortieren?
Merke

Ein schnelles Verfahren ist nur dann passend, wenn seine Voraussetzungen erfüllt sind. Binäre Suche auf einer ungeordneten Liste kann Treffer übersehen.

Teste dich
Frage 1 von 1LeichtWelche Angabe brauchst du neben der Liste, damit eine Suche eindeutig beginnen kann?
Lösung: Den gesuchten Zielwert — Jede Suche benötigt einen Zielwert. Nur manche Suchverfahren verlangen zusätzlich eine Sortierung.
Lineare Suche prüft der Reihe nach

Die lineare Suche beginnt beim ersten Element. Sie vergleicht jedes Element mit dem Ziel und stoppt beim ersten Treffer. Erreicht sie das Listenende ohne Treffer, ist das Ziel nicht enthalten. Die Reihenfolge der Daten spielt keine Rolle.

Beispiel

Gesucht ist 34 in der Liste

[3, 7, 11, 14, 18, 23, 29, 34, 41, 47, 52].

Die Vergleiche lauten der Reihe nach: 3, 7, 11, 14, 18, 23, 29, 34. Der achte Vergleich trifft. Die Ausgabe ist also: „34 steht an Position 8“, wenn ab 1 gezählt wird.

Ist der Zielwert das erste Element, genügt ein Vergleich. Fehlt er oder steht er ganz am Ende, werden bei einer Liste mit $n$ Elementen bis zu $n$ Vergleiche benötigt. Deshalb beschreibt man das lineare Wachstum der Laufzeit mit $O(n)$: Verdoppelt sich die Listenlänge, kann sich auch die maximale Zahl der Vergleiche ungefähr verdoppeln.

Teste dich
Frage 1 von 1MittelIn der ungeordneten Liste [18, 4, 31, 9, 22] soll 9 gesucht werden. Welches Vorgehen ist ohne Vorbereitung zuverlässig?
Lösung: Von links jedes Element prüfen, bis 9 gefunden ist — Die lineare Suche braucht keine Sortierung. Sie findet 9 hier beim vierten Vergleich.
Binäre Suche halbiert den Suchbereich

Die binäre Suche nutzt die Ordnung einer aufsteigend sortierten Liste. Sie vergleicht das Ziel mit einem mittleren Element. Ist das Ziel kleiner, bleibt nur der linke Teil; ist es größer, bleibt nur der rechte Teil. So wird der noch mögliche Suchbereich immer wieder ungefähr halbiert.

Beispiel

Gesucht ist wieder 34 in der sortierten Liste

[3, 7, 11, 14, 18, 23, 29, 34, 41, 47, 52].

  1. Mitte 23: $34 > 23$. Nur [29, 34, 41, 47, 52] bleibt.
  2. Mitte 41: $34 < 41$. Nur [29, 34] bleibt.
  3. Bei zwei Elementen wird hier die linke Mitte 29 gewählt: $34 > 29$.
  4. Das verbleibende Element 34 ist der Treffer.

Die binäre Suche benötigt vier Vergleiche statt acht bei der linearen Suche. Eine andere feste Regel für die Mitte bei zwei Elementen kann die Zahl im Einzelfall ändern, aber nicht das Halbierungsprinzip.

Warum darfst du eine Hälfte verwerfen? In einer sortierten Liste sind alle Werte links von 41 kleiner als 41 und alle Werte rechts davon größer. Wenn 34 kleiner als 41 ist, kann es rechts nicht stehen. Diese Aussage bleibt nach jedem Schritt für den aktuellen Suchbereich gültig.

Bei $n$ Elementen wächst die maximale Zahl der Vergleiche ungefähr logarithmisch, geschrieben $O(\log n)$. Bei 1024 Elementen führen zehn Halbierungen von 1024 auf einen Kandidaten, denn $2^{10}=1024$. In einer üblichen Umsetzung sind im ungünstigsten Fall höchstens 11 Zielvergleiche nötig, einschließlich der abschließenden Prüfung des letzten Kandidaten.

Teste dich
Frage 1 von 2LeichtWelche Voraussetzung macht das Verwerfen einer Listenhälfte sicher?
Lösung: Die Liste ist nach dem verglichenen Merkmal sortiert — Nur die Sortierung erlaubt aus „kleiner“ oder „größer“ abzuleiten, in welcher Hälfte das Ziel noch liegen kann.
Frage 2 von 2MittelDu suchst 7 in [2, 5, 7, 12, 20, 31, 44]. Das mittlere Element ist 12. Wo geht die Suche weiter?
Lösung: Im linken Teil [2, 5, 7] — Der Vergleich $7 < 12$ schließt die Mitte und den gesamten rechten Teil aus.
Aufwand vergleichen und passend wählen

Die Anzahl der Vergleiche zeigt, wie stark ein Verfahren mit der Eingabegröße wächst. Für eine einzelne kleine Liste kann der Unterschied gering sein. Bei großen Listen wird das wiederholte Halbieren deutlich wirksamer.

Anzahl ElementeLineare Suche: höchstensBinäre Suche: höchstens ungefähr
1616 Vergleiche5 Vergleiche
128128 Vergleiche8 Vergleiche
10241024 Vergleiche11 Vergleiche

Die Werte der binären Suche zählen eine abschließende Zielprüfung mit. Die genaue Zahl hängt von der Umsetzung und davon ab, ob der Treffer vorhanden ist. Entscheidend ist das Wachstum: linear bei $O(n)$, logarithmisch bei $O(\log n)$.

Gut zu wissen

Vertiefung: Big O beschreibt hier, wie der Aufwand bei großen Eingaben wächst. Die Notation ist keine Stoppuhr. Konstanten, Datenstruktur und Zugriffskosten beeinflussen die tatsächliche Laufzeit. Außerdem kostet das Sortieren selbst Zeit. Für eine einzige Suche in ungeordneten Daten kann lineares Suchen sinnvoller sein als erst zu sortieren. Bei vielen Suchen kann sich eine einmalige Sortierung lohnen.

Eine sichere Entscheidungshilfe:

  • Unsortiert und nur wenige Suchen: lineare Suche.
  • Bereits sortiert und direkter Zugriff auf mittlere Elemente möglich: binäre Suche.
  • Unsortiert und viele spätere Suchen: Kosten des Sortierens gegen die Einsparungen bei den Suchen abwägen.
Teste dich
Frage 1 von 2MittelEine sortierte Liste mit 1024 Einträgen wird häufig durchsucht. Welche Begründung spricht für die binäre Suche?
Lösung: Ihr Suchbereich halbiert sich; statt bis zu 1024 sind ungefähr 11 Vergleiche nötig. — Die vorhandene Sortierung erfüllt die zentrale Voraussetzung. Das logarithmische Wachstum macht den Unterschied bei großen Datenmengen aus.
Frage 2 von 2SchwerEine ungeordnete Liste mit 20 Einträgen wird genau einmal durchsucht. Was ist die sinnvollste begründete Wahl?
Lösung: Meist linear suchen, weil keine vorbereitende Sortierung nötig ist — Die passende Wahl berücksichtigt nicht nur den Suchaufwand, sondern auch Voraussetzungen und Vorbereitungskosten.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Suchalgorithmus
    • Eingabe und Ausgabe
      • Liste plus Zielwert
      • Fundstelle oder „nicht enthalten“
    • Lineare Suche
      • der Reihe nach prüfen
      • Sortierung nicht nötig
      • Aufwand $O(n)$
    • Binäre Suche
      • Mitte vergleichen
      • sortierte Liste nötig
      • Aufwand $O(\log n)$
    • Entscheidung
      • Voraussetzungen prüfen
      • Such- und Vorbereitungskosten vergleichen
Abschluss-Check
Teste dich
Frage 1 von 4LeichtWelche Aussage unterscheidet die beiden Verfahren richtig?
Lösung: Lineare Suche funktioniert unsortiert; binäre Suche benötigt eine Sortierung. — Der Unterschied liegt im Umgang mit der Ordnung: lineares Prüfen braucht sie nicht, Halbieren schon.
Frage 2 von 4MittelGesucht ist 26 in [4, 9, 15, 21, 26, 33, 40]. Die Mitte ist 21. Welcher Schritt folgt bei binärer Suche?
Lösung: Rechts in [26, 33, 40] weitersuchen — Der Vergleich $26 > 21$ verwirft die Mitte und die linke Hälfte. Im rechten Teil ist 26 der nächste mittlere Wert.
Frage 3 von 4SchwerGesucht ist 33 in [4, 9, 15, 21, 26, 33, 40]. Welche Vergleichsfolgen und Anzahlen sind richtig?
Lösung: Linear: 4, 9, 15, 21, 26, 33 — sechs Vergleiche; binär: 21, 33 — zwei Vergleiche — Beim linearen Suchen prüfst du von links bis zum Treffer. Beim binären Suchen führt der erste Vergleich mit 21 direkt in den rechten Teil, dessen Mitte 33 ist.
Frage 4 von 4SchwerEine App durchsucht dieselbe große Namensliste mehrmals pro Minute. Die Liste ändert sich selten und ist noch ungeordnet. Welche Planung ist am überzeugendsten?
Lösung: Einmal sortieren und danach binär suchen; dabei die Sortierkosten mit den vielen eingesparten Vergleichen abwägen — Viele Suchen können eine einmalige Vorbereitung rechtfertigen. Größe allein genügt aber nicht: Die binäre Suche ist erst nach der Sortierung zuverlässig.

Passend dazu