- Lineare Suche
-
Lineare Suche ist ein Algorithmus, der auch unter dem Namen sequentielle Suche bekannt ist. Er ist der einfachste Suchalgorithmus überhaupt.
Die Aufgabe besteht darin, ein Element in einer Liste oder einem Array mit n Elementen zu finden. Man geht dazu die Liste Element für Element durch, bis man es gefunden hat. Der Suchaufwand wächst linear mit der Anzahl der Elemente in der Liste.
Wenn die Daten zufallsverteilt sind, dann werden im Schnitt n/2 Vergleichsoperationen benötigt. Im besten Fall ist gleich das erste Element der Liste dasjenige, das man sucht, im schlechtesten ist es das letzte.
Wenn die Anzahl der Elemente in einer Liste klein ist, dann ist es oft auch das effizienteste Verfahren.
Die effizientere Binäre Suche kann nur bei geordneten Listen benutzt werden.
Für ungeordnete Listen existiert mit Lazy Select noch ein randomisierter Algorithmus, der mit relativ hoher Wahrscheinlichkeit das x-te Element einer Liste bzgl. einer Ordnung schneller als in linearer Zeit finden kann.
Inhaltsverzeichnis
Implementierung in Pseudocode
BEGINN LinearSearch EINGABE: (S)uchschlüssel, (A)rray VARIABLE: N = Anzahl Elemente im Array 'A' VARIABLE: SucheErfolgreich = falsch VARIABLE: i = 0 FÜR i BIS N ODER SucheErfolgreich WENN A[i] = S DANN SucheErfolgreich = wahr WENN SucheErfolgreich = wahr DANN AUSGABE: i SONST AUSGABE: Suche nicht erfolgreich ENDE
Beispielimplementierung in Ruby
def Lineare_suche(datenArray,wert) for i in datenArray return true if i == wert; end return false end
Beispielimplementierung in Objective CAML
let rec linsuche = function ([],a) -> false | (x::t,a) -> if x = a then true else linsuche(t,a);;
Beispielimplementierung in Java
Das Beispiel gibt den Wert
-1
zurück, wenn das gesuchte Element nicht im Array „daten
“ vorhanden ist. Ansonsten gibt es die Position des Elementes zurück.public static int lineareSuche(final int gesucht, final int[] daten) { for (int i = 0; i < daten.length; i++) { if (daten[i] == gesucht) { return i; } } return -1; }
Beispielimplementierung in Python
Findet alle Suchschlüssel in der Liste.
def lineare_suche(liste, gesucht): idxs = [] for index, element in enumerate(liste): if element == gesucht: idxs.append(index) return idxs # bzw. lineare_suche = lambda l,g : [i for i,e in enumerate(l) if g == e]
Findet erstes Vorkommen des Suchschlüssels in einer Liste.
def lineare_suche(liste, gesucht): for index, element in enumerate(liste): if element == gesucht: return index # bzw. gibt es schon lineare_suche = lambda l,g : l.index(g) if g in l else None
Siehe auch
Wikimedia Foundation.