www.wikidata.de-de.nina.az
Lineare Suche ist ein Algorithmus der auch unter dem Namen sequentielle Suche bekannt ist Er ist der einfachste Suchalgorithmus uberhaupt Die Aufgabe besteht darin ein Element in einer Liste oder einem Array mit n Elementen zu finden Man geht dazu die Liste Element fur Element durch bis man es gefunden hat Der Suchaufwand wachst linear mit der Anzahl der Elemente in der Liste Die effizientere Binare Suche kann nur bei geordneten Listen benutzt werden Fur ungeordnete Listen existiert mit Lazy Select noch ein randomisierter Algorithmus der mit relativ hoher Wahrscheinlichkeit das x te Element einer Liste bezuglich einer Ordnung schneller als in linearer Zeit finden kann Inhaltsverzeichnis 1 Komplexitat 2 Implementierungen Beispiele 2 1 Implementierung in Pseudocode 2 2 Beispielimplementierung in Ruby 2 3 Beispielimplementierung in Delphi bzw Free Pascal 2 4 Beispielimplementierung in Objective CAML 2 5 Beispielimplementierung in Java 2 6 Beispielimplementierung in Python 2 7 Beispielimplementierung in C 3 Siehe auchKomplexitat BearbeitenDie lineare Suche befindet sich in der Komplexitatsklasse O n da sie im schlechtesten Fall wenn der gesuchte Wert nicht gefunden werden kann n Vergleiche benotigt Wenn die Daten zufallsverteilt sind dann werden im Schnitt n 1 2 Vergleichsoperationen benotigt Im besten Fall ist gleich das erste Element der Liste dasjenige das man sucht Wenn die Anzahl der Elemente in einer Liste klein ist dann ist es oft auch das effizienteste Verfahren Implementierungen Beispiele BearbeitenImplementierung in Pseudocode Bearbeiten BEGINN LinearSearch EINGABE S uchschlussel A rray VARIABLE N Anzahl Elemente im Array A VARIABLE SucheErfolgreich falsch VARIABLE i 0 FUR 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 Bearbeiten Falls der Wert nicht gefunden wird gibt die Methode nil zuruck def lineare suche liste gesucht liste each with index do wert index return index if wert gesucht end nil end bzw liste index gesucht Beispielimplementierung in Delphi bzw Free Pascal Bearbeiten Durchsucht ein Array of Integer nach einem gesuchten Integer Wert Wird der gesuchte Wert gefunden gibt die Funktion den Index des Wertes zuruck Falls der Wert nicht gefunden wird gibt die Funktion 1 zuruck function LineareSuche gesucht integer ADaten array of integer integer var c integer begin Result 1 for c Low ADaten to High ADaten do if gesucht ADaten c then Result c end Beispielimplementierung in Objective CAML Bearbeiten let rec linsuche function a gt false x t a gt if x a then true else linsuche t a Beispielimplementierung in Java Bearbeiten Das Beispiel gibt den Wert 1 zuruck wenn das gesuchte Element nicht im Array daten vorhanden ist Ansonsten gibt es die Position des Elementes zuruck public static int lineareSuche final int gesucht final int daten for int i 0 i lt daten length i if daten i gesucht return i return 1 Beispielimplementierung in Python Bearbeiten Findet alle Suchschlussel 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 Suchschlussels 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 Beispielimplementierung in C Bearbeiten Findet ersten Suchschlussel Ganzzahl in der Liste include lt stdio h gt int daten Zeiger auf zu durchsuchende Daten int datenlaenge Grosse des zu durchsuchenden Arrays int suche Gesuchte Ganzzahl int suche sequenziell int daten int datenlaenge int suche int i for i 0 i lt datenlaenge i if daten i suche return i return 1 Beispielaufruf int main void int datenArray 10 81 1203 180 42 10 566 102 751 54 648 int pos suche sequenziell datenArray 10 42 1 fur nicht gefunden ansonsten erste Position im Array mit 0 beginnend if pos lt 0 printf Nicht gefunden else printf Gefunden an Position d pos return 0 Siehe auch BearbeitenListe von Algorithmen Abgerufen von https de wikipedia org w index php title Lineare Suche amp oldid 218374077