Menu
Coddy logo textTech

Lineare Suche

Zuletzt aktualisiert

Die lineare Suche (auch sequentielle Suche genannt) ist der einfachste Suchalgorithmus: Beginne beim ersten Element und vergleiche jedes mit dem Ziel, bis du einen Treffer findest oder keine Elemente mehr übrig sind. Sie macht keinerlei Annahmen über die Daten — das Array kann unsortiert sein, und die Elemente können alles sein, was sich auf Gleichheit vergleichen lässt.

Die Animation oben hebt jeden Vergleich hervor, während der Durchlauf von links nach rechts fortschreitet, und stoppt in dem Moment, in dem das Ziel erscheint. Ihre Einfachheit kostet Geschwindigkeit: Im schlechtesten Fall wird jedes Element geprüft, sie läuft also in O(n). Sind die Daten sortiert, findet die binäre Suche dieselbe Antwort in O(log n) — und wenn du zuerst sortierte Daten brauchst, sieh dir Merge Sort an.

Zeit- und Platzkomplexität

FallKomplexitätAnmerkungen
Bester FallO(1)Das erste Element ist das Ziel.
Durchschnittlicher FallO(n)Im Schnitt wird die Hälfte der Elemente geprüft, bevor ein Treffer kommt.
Schlechtester FallO(n)Das Ziel ist das letzte Element — oder gar nicht vorhanden.
PlatzO(1)Nur der aktuelle Index wird gehalten.

Schritt für Schritt

SchrittWas passiert
1Beginne bei Index 0, dem ersten Element des Arrays.
2Vergleiche das aktuelle Element mit dem Zielwert.
3Sind sie gleich, gib den aktuellen Index zurück — gefunden.
4Andernfalls gehe eine Position nach rechts und wiederhole.
5Wird das Ende des Arrays ohne Treffer erreicht, ist das Ziel nicht vorhanden (gib -1 zurück).

Durchgerechnetes Beispiel

Suche nach 5 in [7, 3, 9, 1, 5, 8, 2]:

VergleichIndexElementErgebnis
1077 ≠ 5 — weiter suchen.
2133 ≠ 5 — weiter suchen.
3299 ≠ 5 — weiter suchen.
4311 ≠ 5 — weiter suchen.
5455 = 5 — bei Index 4 gefunden.

Wann die lineare Suche verwenden

Verwenden, wennVermeiden, wenn
Die Daten unsortiert sind oder sich ständig ändernDie Daten sortiert sind — die binäre Suche ist exponentiell schneller
Die Sammlung klein ist, sodass Einfachheit gewinntDer Datensatz groß ist und wiederholt durchsucht wird
Du nur sequenziellen Zugriff hast (Streams, verkettete Listen)Du dir einen Index oder eine Hashtabelle für O(1)-Lookups leisten kannst

Linear Search-Code

Eine saubere, lauffähige Linear Search-Implementierung in Python, JavaScript, Java, C++, C, Pseudocode. Wähle eine Sprache, kopiere den Code oder öffne ihn vorgeladen im Coddy-Playground.

Linear Search-Code in Python

Python
1def linear_search(a, target):2    # Scan left to right until the target appears3    for i in range(len(a)):4        if a[i] == target:5            return i6    return -17
8
9nums = [7, 3, 9, 1, 5, 8, 2]10print("Index of 5:", linear_search(nums, 5))11print("Index of 4:", linear_search(nums, 4))
Führe diesen Code im Python-Playground aus

FAQ zur linearen Suche

Was ist die Zeitkomplexität der linearen Suche?
O(n) im durchschnittlichen und im schlechtesten Fall — der Durchlauf muss unter Umständen jedes Element besuchen — und O(1) im besten Fall, wenn das erste Element das Ziel ist. Sie benötigt O(1) zusätzlichen Platz.
Braucht die lineare Suche sortierte Daten?
Nein — das ist ihr größter Vorteil. Die lineare Suche funktioniert auf völlig unsortierten Daten, weil sie jedes Element auf Gleichheit prüft; die Reihenfolge spielt nie eine Rolle. Die binäre Suche dagegen funktioniert nur auf sortierten Arrays.
Wann ist die lineare Suche besser als die binäre Suche?
Wenn die Daten unsortiert sind und nur einmal durchsucht werden (vorheriges Sortieren würde O(n log n) kosten), wenn die Sammlung winzig ist, oder wenn du nur sequenziellen Zugriff hast, etwa auf einen Stream oder eine verkettete Liste. Für wiederholte Lookups auf sortierten Arrays gewinnt die binäre Suche.
Ist die lineare Suche dasselbe wie die sequentielle Suche?
Ja — die beiden Namen beschreiben denselben Algorithmus: die Elemente der Reihe nach durchgehen, bis das Ziel gefunden ist oder die Sammlung endet.
Wie viele Vergleiche macht die lineare Suche im Durchschnitt?
Ist das Ziel vorhanden und mit gleicher Wahrscheinlichkeit an jeder Position, im Schnitt etwa n/2 Vergleiche; fehlt das Ziel, genau n. Dieses lineare Wachstum ist der Grund für den Namen lineare Suche.
Coddy programming languages illustration

Meistere Algorithmen mit Coddy

LOS GEHT'S