Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Lineare Suche

Lineare Suche ist ein Algorithmus, der auch unter dem Namen sequentielle Suche bekannt ist. Er ist der einfachste Suchalgorithmus überhaupt.

Inhalt5 Abschnitte
  1. 1. Grundprinzip und Einsatz
  2. 2. Laufzeit und Anzahl der Vergleiche
  3. 3. Allgemeiner Ablauf
  4. 4. Mögliche Rückgabewerte
  5. 5. Typisches Beispiel

Grundprinzip und Einsatz

Die lineare Suche, auch sequentielle Suche genannt, ist der einfachste Suchalgorithmus. Sie sucht ein bestimmtes Element in einer Liste oder einem Array mit n Elementen. Dazu werden die Elemente der Reihe nach mit dem Suchschlüssel, also dem gesuchten Wert, verglichen. Die Suche endet gewöhnlich beim ersten Treffer oder nach dem letzten Element, falls der Wert nicht vorkommt.

Die lineare Suche funktioniert auch bei ungeordneten Listen. Die effizientere binäre Suche setzt dagegen eine geordnete Liste voraus. Für kleine Listen ist die lineare Suche oft das effizienteste Verfahren. Für ungeordnete Listen gibt es außerdem Lazy Select, einen randomisierten Algorithmus, der mit relativ hoher Wahrscheinlichkeit das x-te Element bezüglich einer Ordnung schneller als in linearer Zeit finden kann.

Laufzeit und Anzahl der Vergleiche

Der Suchaufwand wächst linear mit der Zahl n der Listenelemente. Deshalb gehört der Algorithmus zur Komplexitätsklasse O(n).

• Schlechtester Fall: Der gesuchte Wert ist nicht vorhanden oder wird erst am Ende gefunden. Dann sind n Vergleiche nötig.

• Durchschnitt bei zufallsverteilten Daten: Es werden (n+1)/2 Vergleichsoperationen benötigt.

• Bester Fall: Bereits das erste Element ist der gesuchte Wert; dann genügt ein Vergleich.

Allgemeiner Ablauf

Der Algorithmus erhält einen Suchschlüssel S und ein Array A. Zunächst wird die Anzahl N der Elemente bestimmt, der Startindex i auf 0 gesetzt und der Sucherfolg als falsch markiert. Anschließend werden die Elemente nacheinander geprüft. Gilt A[i] = S, wird die Suche als erfolgreich markiert. Bei Erfolg wird der Index i ausgegeben; andernfalls lautet das Ergebnis, dass die Suche nicht erfolgreich war.

Mögliche Rückgabewerte

Die Beispielimplementierungen unterscheiden sich vor allem darin, welches Ergebnis sie liefern:

• C, Java sowie Delphi beziehungsweise Free Pascal geben bei einem Treffer einen Index zurück und verwenden -1 für „nicht gefunden“.

• Ruby liefert den Index des ersten Treffers und andernfalls nil; alternativ kann die eingebaute Methode index verwendet werden.

• Objective CAML liefert einen Wahrheitswert: true bei einem Treffer und false, wenn der Wert nicht vorkommt.

• Python zeigt zwei Varianten: Eine sammelt die Indizes aller Vorkommen in einer Liste. Die andere beendet die Suche beim ersten Vorkommen und liefert dessen Index; wenn nichts gefunden wird, kann sie None zurückgeben.

Ob nur das erste oder alle Vorkommen ermittelt werden, hängt somit von der konkreten Implementierung ab.

Typisches Beispiel

Im C-Beispiel wird das Array [81, 1203, 180, 42, 10, 566, 102, 751, 54, 648] nach dem Wert 42 durchsucht. Die Vergleiche beginnen beim Index 0. Der Wert 42 wird am Index 3 gefunden, wobei die Indizierung mit 0 beginnt. Die Funktion gibt daher 3 zurück. Wäre der Wert nicht vorhanden, würde sie -1 zurückgeben.

Lernvideos zu Lineare Suche

Weiterlesen

Algorithmus Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten. ... Damit können sie zur Ausführung in ein Computerprogramm implementiert, aber auch in … Binäre Suche Die binäre Suche ist ein Algorithmus, der in einem Array sehr effizient ein gesuchtes Element entweder findet oder dessen Vorhandensein zuverlässig … Komplexitätsklasse Eine Komplexitätsklasse ist eine Menge von Problemen, welche sich in einem bestimmten ressourcenbeschränkten Berechnungsmodell berechnen lassen. Zusammenhang … Mittelwert Ein Mittelwert (kurz auch nur Mittel; anderes Wort Durchschnitt) ist eine Zahl, die aus gegebenen Zahlen nach einer bestimmten Rechenvorschrift ermittelt … Embarcadero Delphi Delphi ist eine vom Unternehmen Borland entwickelte Entwicklungsumgebung für die Programmiersprache Object Pascal. Im November 2006 wurden die … Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. Python (Programmiersprache) Python ([ˈpʰaɪθn̩], [ ˈpʰaɪθɑn], auf Deutsch auch [ ˈpʰyːtɔn]) ist eine universell nutzbare, üblicherweise interpretierte, höhere Programmiersprache. C (Programmiersprache) C ist eine imperative und prozedurale Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories entwickelte. Liste von Algorithmen Klassen von Algorithmen nach Komplexität · Linear zeitbeschränkter Algorithmus · Logarithmisch zeitbeschränkter Algorithmus · Polynomial zeitbeschränkter …