<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Lineare_Suche</id>
	<title>Lineare Suche - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Lineare_Suche"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lineare_Suche&amp;action=history"/>
	<updated>2026-05-28T16:00:11Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Lineare_Suche&amp;diff=27174&amp;oldid=prev</id>
		<title>imported&gt;Fan-vom-Wiki: lazy select kursiv</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lineare_Suche&amp;diff=27174&amp;oldid=prev"/>
		<updated>2021-12-20T22:41:22Z</updated>

		<summary type="html">&lt;p&gt;lazy select kursiv&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Lineare Suche&amp;#039;&amp;#039;&amp;#039; ist ein [[Algorithmus]], der auch unter dem Namen &amp;#039;&amp;#039;&amp;#039;sequentielle Suche&amp;#039;&amp;#039;&amp;#039; bekannt ist. Er ist der einfachste [[Suchalgorithmus]] überhaupt.&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe besteht darin, ein Element in einer Liste oder einem [[Feld (Datentyp)|Array]] mit &amp;#039;&amp;#039;n&amp;#039;&amp;#039; Elementen zu finden.&lt;br /&gt;
Man geht dazu die Liste Element für Element durch, bis man es gefunden hat.&lt;br /&gt;
Der Suchaufwand wächst linear mit der Anzahl der Elemente in der Liste.&lt;br /&gt;
&lt;br /&gt;
Die effizientere [[Binäre Suche]] kann nur bei geordneten Listen benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Für ungeordnete Listen existiert mit &amp;#039;&amp;#039;Lazy Select&amp;#039;&amp;#039; noch ein [[randomisierter Algorithmus]], der mit relativ hoher Wahrscheinlichkeit das x-te Element einer Liste bezüglich einer Ordnung schneller als in linearer Zeit finden kann.&lt;br /&gt;
&lt;br /&gt;
== Komplexität ==&lt;br /&gt;
Die lineare Suche befindet sich in der [[Komplexitätsklasse]] &amp;#039;&amp;#039;O(n)&amp;#039;&amp;#039;, da sie im schlechtesten Fall (wenn der gesuchte Wert nicht gefunden werden kann) &amp;#039;&amp;#039;n&amp;#039;&amp;#039; Vergleiche benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn die Daten zufallsverteilt sind, dann werden im [[Mittelwert|Schnitt]] &amp;#039;&amp;#039;(n+1)/2&amp;#039;&amp;#039; Vergleichsoperationen benötigt.&lt;br /&gt;
&lt;br /&gt;
Im besten Fall ist gleich das erste Element der Liste dasjenige, das man sucht.&lt;br /&gt;
&lt;br /&gt;
Wenn die Anzahl der Elemente in einer Liste klein ist, dann ist es oft auch das effizienteste Verfahren.&lt;br /&gt;
&lt;br /&gt;
== Implementierungen (Beispiele) ==&lt;br /&gt;
&lt;br /&gt;
=== Implementierung in [[Pseudocode]] ===&lt;br /&gt;
 BEGINN LinearSearch&lt;br /&gt;
&lt;br /&gt;
   EINGABE: (S)uchschlüssel, (A)rray&lt;br /&gt;
&lt;br /&gt;
   VARIABLE: N = Anzahl Elemente im Array &amp;#039;A&amp;#039;&lt;br /&gt;
   VARIABLE: SucheErfolgreich = falsch&lt;br /&gt;
   VARIABLE: i = 0&lt;br /&gt;
&lt;br /&gt;
   FÜR i BIS N ODER SucheErfolgreich&lt;br /&gt;
     WENN A[i] = S&lt;br /&gt;
     DANN SucheErfolgreich = wahr&lt;br /&gt;
&lt;br /&gt;
   WENN SucheErfolgreich = wahr&lt;br /&gt;
   DANN AUSGABE: i&lt;br /&gt;
   SONST AUSGABE: Suche nicht erfolgreich&lt;br /&gt;
&lt;br /&gt;
 ENDE&lt;br /&gt;
&lt;br /&gt;
=== Beispielimplementierung in [[Ruby (Programmiersprache)|Ruby]] ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
# Falls der Wert nicht gefunden wird, gibt die Methode nil zurück.&lt;br /&gt;
def lineare_suche(liste, gesucht)&lt;br /&gt;
  liste.each_with_index do |wert, index|&lt;br /&gt;
    return index if wert == gesucht&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
# bzw.&lt;br /&gt;
liste.index(gesucht)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispielimplementierung in [[Embarcadero Delphi|Delphi]] bzw. [[Free Pascal]] ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
// Durchsucht ein Array of Integer nach einem gesuchten Integer-Wert.&lt;br /&gt;
// Wird der gesuchte Wert gefunden, gibt die Funktion den Index des Wertes zurück.&lt;br /&gt;
// Falls der Wert nicht gefunden wird, gibt die Funktion -1 zurück.&lt;br /&gt;
function LineareSuche(gesucht : integer; ADaten : array of integer) : integer;&lt;br /&gt;
var&lt;br /&gt;
  c : integer;&lt;br /&gt;
begin&lt;br /&gt;
  Result := -1;&lt;br /&gt;
&lt;br /&gt;
  for c := Low(ADaten) to High(ADaten) do&lt;br /&gt;
    if gesucht = ADaten[c] then&lt;br /&gt;
      Result := c;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispielimplementierung in [[Objective CAML]] ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ocaml&amp;quot;&amp;gt;&lt;br /&gt;
 let rec linsuche = function&lt;br /&gt;
     ([],a) -&amp;gt; false&lt;br /&gt;
     | (x::t,a) -&amp;gt; if x = a then true else linsuche(t,a);;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispielimplementierung in [[Java (Programmiersprache)|Java]] ===&lt;br /&gt;
Das Beispiel gibt den Wert &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; zurück, wenn das gesuchte Element nicht im Array &amp;lt;code&amp;gt;daten&amp;lt;/code&amp;gt; vorhanden ist. Ansonsten gibt es die Position des Elementes zurück.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static int lineareSuche(final int gesucht, final int[] daten) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; daten.length; i++) {&lt;br /&gt;
        if (daten[i] == gesucht) {&lt;br /&gt;
            return i;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return -1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispielimplementierung in [[Python (Programmiersprache)|Python]] ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Findet alle Suchschlüssel in der Liste.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def lineare_suche(liste, gesucht):&lt;br /&gt;
    idxs = []&lt;br /&gt;
    for index, element in enumerate(liste):&lt;br /&gt;
        if element == gesucht:&lt;br /&gt;
            idxs.append(index)&lt;br /&gt;
    return idxs&lt;br /&gt;
# bzw.&lt;br /&gt;
lineare_suche = lambda l,g : [i for i,e in enumerate(l) if g == e]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Findet erstes Vorkommen des Suchschlüssels in einer Liste.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def lineare_suche(liste, gesucht):&lt;br /&gt;
    for index, element in enumerate(liste):&lt;br /&gt;
        if element == gesucht:&lt;br /&gt;
            return index&lt;br /&gt;
# bzw. gibt es schon&lt;br /&gt;
lineare_suche = lambda l,g : l.index(g) if g in l else None&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispielimplementierung in [[C (Programmiersprache)|C]] ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Findet ersten Suchschlüssel (Ganzzahl) in der Liste.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
int*daten = Zeiger auf zu durchsuchende Daten&lt;br /&gt;
int datenlaenge = Größe des zu durchsuchenden &amp;quot;Arrays&amp;quot;&lt;br /&gt;
int suche = Gesuchte Ganzzahl&lt;br /&gt;
*/&lt;br /&gt;
int suche_sequenziell(int*daten, int datenlaenge, int suche) {&lt;br /&gt;
	int i;&lt;br /&gt;
	for (i=0;i&amp;lt;datenlaenge;i++)&lt;br /&gt;
		if (daten[i]==suche)&lt;br /&gt;
			return i;&lt;br /&gt;
	return -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Beispielaufruf */&lt;br /&gt;
int main(void) {&lt;br /&gt;
	int datenArray[10] = { 81, 1203, 180, 42, 10, 566, 102, 751, 54, 648 };&lt;br /&gt;
	int pos = suche_sequenziell(datenArray, 10, 42);&lt;br /&gt;
/* -1 für nicht gefunden, ansonsten (erste) Position im Array, mit 0 beginnend */&lt;br /&gt;
	if (pos&amp;lt;0)&lt;br /&gt;
		printf(&amp;quot;Nicht gefunden&amp;quot;);&lt;br /&gt;
	else&lt;br /&gt;
		printf(&amp;quot;Gefunden an Position %d&amp;quot;,pos);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Liste von Algorithmen]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Suchalgorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Fan-vom-Wiki</name></author>
	</entry>
</feed>