/
/
·
·
/
/
·
·
  • Einführung
  • Die Idee
  • Implementierung
  • Komplexität
  • Klausur-Trace: lineare Suche Schritt für Schritt
  • Eigenschaften
  • Wann sinnvoll?
ThemenAlgorithmenLineare Suche
Algorithmen·3Lerneinheiten·22min·Stand02.08.2026

Lineare Suche.

Lineare Suche prüft jedes Element der Reihe nach, bis sie das Gesuchte findet oder das Ende des Arrays erreicht. Funktioniert auf jedem Array, sortiert oder unsortiert. Du lernst hier die Komplexität (O(n)O(n)O(n) Worst Case, O(1)O(1)O(1) Best Case, im Durchschnitt ∼n/2\sim n/2∼n/2 Vergleiche bei erfolgreicher Suche und gleichverteiltem Treffer), die typische Klausur-Falle beim return-Verhalten bei Duplikaten (Standard liefert ersten Treffer, z. B. [4, 2, 4] mit Target 4 → Index 0), die Implementierung in Java und Python, wann lineare Suche besser ist als binäre Suche (unsortierter Input, sehr kleines nnn, einmalige Suche ohne Sortier-Vorlauf) und die Stop-Bedingung (Worst Case voller Durchlauf wenn nicht gefunden, Best Case Treffer am Anfang).

Was du in der Klausur können musst:

  • Idee: vom ersten Element bis zum letzten durchlaufen, jedes mit dem Suchwert vergleichen
  • Komplexität: O(n) Worst-Case und Average-Case, O(1) Best-Case (Treffer am Anfang)
  • Voraussetzung: keine, funktioniert auf unsortierten Daten
  • Anwendung: Standard wenn Daten unsortiert sind oder die Liste klein ist

In Klausuren oft gefragt: wann ist Lineare Suche die richtige Wahl?. Antwort: bei unsortierten Daten oder wenn Sortieren teurer wäre als die einmalige Suche. Bei sortierten Daten und mehrfachen Suchen lohnt sich Binäre Suche stattdessen.

Geh durchs Array, prüf jedes Element ob es das gesuchte ist. Stopp bei Treffer, oder am Ende wenn nichts gefunden.

Das ist genau das, was du auch machst, wenn du eine Telefonnummer in einer unsortierten Liste suchst: von oben nach unten durchgehen.

Inline-Trace für [3,8,1,7,5][3, 8, 1, 7, 5][3,8,1,7,5]

Target 777 (Treffer an Index 3):

iarr[i]arr[i] == 7?Aktion
03neinweiter
18neinweiter
21neinweiter
37jareturn 3

Target 999999 (nicht im Array, erfolglose Suche):

iarr[i]arr[i] == 99?Aktion
03neinweiter
18neinweiter
21neinweiter
37neinweiter
45neinSchleife endet

Nach Schleife: return −1-1−1. Bei erfolgreicher Suche stoppt die Schleife sofort beim Treffer, bei erfolgloser Suche müssen alle nnn Elemente geprüft werden.

java// snippet
public static int linearSearch(int[] arr, int target) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == target) return i;
    }
    return -1;
}
In Java gibst du den Index bei Treffer zurück, sonst -1 für 'nicht gefunden'.
FallVergleiche
Best Case (Element ist erstes)1
Average Case (Element gleichverteilt im Array, garantiert vorhanden)(n+1)/2≈n/2(n+1)/2 \approx n/2(n+1)/2≈n/2
Worst Case (Element ist letztes oder fehlt)nnn

→ O(n) im Worst und Average Case. Die Average-Formel (n+1)/2(n+1)/2(n+1)/2 gilt unter der Annahme, dass das Element garantiert im Array vorhanden ist und jede Position gleich wahrscheinlich ist. Bei erfolgreicher Suche mit gleichverteiltem Treffer im Schnitt etwa n/2n/2n/2 Vergleiche. Bei erfolgloser Suche werden alle nnn Elemente geprüft, also genau nnn Vergleiche. Bei Trefferwahrscheinlichkeit p<1p < 1p<1 liegt der Erwartungswert irgendwo dazwischen, formal p⋅(n+1)/2+(1−p)⋅np \cdot (n+1)/2 + (1-p) \cdot np⋅(n+1)/2+(1−p)⋅n.

Zwei typische Aufgabenstellungen aus echten Algorithmen-Klausuren:

Beispiel A: Treffer in der Mitte

Array [7,2,9,4,11][7, 2, 9, 4, 11][7,2,9,4,11] (Indizes 0..4), gesucht Target 999.

Iteriarr[i]arr[i] == 9?Vergleiche bisher
107nein1
212nein2
329ja → return 23

Drei Vergleiche, Index 2 zurück. Bei Target an Position kkk braucht lineare Suche genau k+1k+1k+1 Vergleiche.

Beispiel B: erfolglose Suche (Worst Case)

Gleiches Array, gesucht Target 555.

Iteriarr[i]arr[i] == 5?Vergleiche bisher
107nein1
212nein2
329nein3
434nein4
5411nein5

Nach Schleifen-Ende: return −1-1−1. Fünf Vergleiche, das ist der Worst Case bei n=5n=5n=5. Bei jeder erfolglosen Suche werden alle Elemente angefasst, der Aufwand ist exakt nnn Vergleiche, anders als bei der binären Suche gibt es keine Abbruchbedingung vor dem Array-Ende, weil ein unsortiertes Array keine Garantien über die Position des Targets liefert. Selbst wenn das Target an der vorletzten Position stehen würde, müsste man die letzte trotzdem prüfen.

Beispiel C: Klausur-Klassiker, erster Treffer bei Duplikaten

Array [4,2,4,7,4][4, 2, 4, 7, 4][4,2,4,7,4], gesucht Target 444. Standard-Variante liefert Index 0, nicht 2 oder 4. Die Schleife bricht beim ersten Match ab. Wenn die Klausur den letzten Treffer will, brauchst du eine angepasste Schleife (rückwärts iterieren oder Index in einer Variablen merken statt sofort zu returnen).

  • ✅ Funktioniert auf JEDER Liste, sortiert oder unsortiert
  • ✅ Einfach zu implementieren: 3 Zeilen Code
  • ✅ Kein Vorbereitungs-Aufwand: kein Sortieren nötig
  • ❌ Lineare Skalierung: bei einer Million Einträgen bis zu eine Million Vergleiche
  • Bei kleinen Arrays: Overhead anderer Verfahren lohnt sich nicht. Die genaue Schwelle ist hardware-abhängig, in der Praxis liegt sie oft bei n<10–30n < 10\text{–}30n<10–30 (Cache-Lokalität und kleine Konstanten von linearer Suche schlagen den Overhead von binärer Suche).
  • Bei unsortierten Daten ohne Zusatzindex: Standard-Option ohne vorher zu sortieren. Mit Hash-Tabelle/Map auf den Daten geht's auch schneller.
  • Bei einmaligen Suchen: lohnt sich kein Sortier-Aufwand
  • Wenn das erste Vorkommen gesucht wird, nicht ein beliebiges

In der Praxis nutzen verschiedene Standard-Bibliotheken lineare Suche für Listen ohne Index, weil dort Random-Access nicht O(1)O(1)O(1) ist. Beispiele:

  • Java: List.contains(), List.indexOf() auf einer ArrayList/LinkedList sind linear. Für primitive Arrays: eigene Schleife oder Stream/Arrays.asList.
  • JavaScript: Array.prototype.indexOf() und Array.prototype.includes() sind linear.
  • Python: x in list und list.index(x) sind linear. Achtung: x in set und x in dict sind hash-basiert und durchschnittlich O(1)O(1)O(1), also nicht linear.

Schau zu, wie der Algorithmus Element für Element durchgeht. Der orange Highlight wandert von links nach rechts, bis er das Target findet (oder das Array zu Ende ist).

Probier folgendes:

  • Setz das Target auf einen Wert ganz vorne im Array: wenig Vergleiche
  • Setz das Target auf einen Wert ganz hinten im Array: viele Vergleiche
  • Setz das Target auf einen Wert außerhalb (z.B. 99): n Vergleiche, nicht gefunden

In dieser Visualisierung liegen kleinere Werte links und größere rechts, das ist nur eine Anzeigewahl. Allgemein hängt die Anzahl Vergleiche bei linearer Suche nur von der Position des Treffers ab, nicht vom Wert selbst.

Lade Visualisierung...

Faustregel zum Mitnehmen: Lineare Suche ist O(n). Der Aufwand wächst genau proportional zur Eingabe-Größe. Bei 100 Elementen maximal 100 Vergleiche, bei einer Million entsprechend.


Wir suchen die 7 im Array [3, 8, 1, 7, 5]. Du siehst den Index i wandern und nach jedem Vergleich den Counter vergleiche mitzählen. So wird sichtbar warum der Aufwand vom Index des Treffers abhängt, nicht vom Wert.

Lade Visualisierung...

Anmelden, um den Fortschritt zu speichern.

Nächster Schritt

Wenn du fertig bist: jetzt üben.

Aktives Abrufen festigt Wissen schneller als nochmal lesen.

War das hilfreich?

Verwandte Themen

  • Bubblesort
  • Mergesort
  • Quicksort
  • Sortier-Vergleich
  • Stack und Queue

Folgt

  • Binäre Suche
  • Such-Vergleich

Tools

Bald: Karteikarten · Spaced-Repetition · Mind-Map-Export

Fachliche Qualität
S-Tier · GoldstandardZuletzt geprüft am 18.05.2026

Diese Lerneinheit wurde für typische Bachelor-Klausuren konzipiert. So prüfen wir · Fehler entdeckt? Melde ihn uns oder markiere die fragliche Stelle direkt im Text oben.

Klausur-ÜbersichtKomplette Übersicht: alle Tabs als linearer Text zum Lernen
▾

Alle Tabs der Lerneinheit (Erklärung · Interaktiv · Quiz) als durchgehender Text. Ideal zum Wiederholen vor der Klausur, und für Suchmaschinen wie Google, Bing und KI-Suche (ChatGPT, Perplexity).

Inhalt dieser Übersicht

  1. Erklärung(Erklärung)
  2. Interaktiv(Visualisierung / Interaktiv)
  3. Quiz(Quiz / Klausurfragen)
Teil 1·Erklärung

Erklärung

Lineare Suche prüft jedes Element der Reihe nach, bis sie das Gesuchte findet oder das Ende des Arrays erreicht. Funktioniert auf jedem Array, sortiert oder unsortiert. Du lernst hier die Komplexität (O(n) Worst Case, O(1) Best Case, im Durchschnitt ∼ n/2 Vergleiche bei erfolgreicher Suche und gleichverteiltem Treffer), die typische Klausur-Falle beim return-Verhalten bei Duplikaten (Standard liefert ersten Treffer, z. B. [4, 2, 4] mit Target 4 → Index 0), die Implementierung in Java und Python, wann lineare Suche besser ist als binäre Suche (unsortierter Input, sehr kleines n, einmalige Suche ohne Sortier-Vorlauf) und die Stop-Bedingung (Worst Case voller Durchlauf wenn nicht gefunden, Best Case Treffer am Anfang).

Was du in der Klausur können musst:

  • Idee: vom ersten Element bis zum letzten durchlaufen, jedes mit dem Suchwert vergleichen
  • Komplexität: O(n) Worst-Case und Average-Case, O(1) Best-Case (Treffer am Anfang)
  • Voraussetzung: keine, funktioniert auf unsortierten Daten
  • Anwendung: Standard wenn Daten unsortiert sind oder die Liste klein ist

In Klausuren oft gefragt: wann ist Lineare Suche die richtige Wahl?. Antwort: bei unsortierten Daten oder wenn Sortieren teurer wäre als die einmalige Suche. Bei sortierten Daten und mehrfachen Suchen lohnt sich Binäre Suche stattdessen.

Die Idee

Geh durchs Array, prüf jedes Element ob es das gesuchte ist. Stopp bei Treffer, oder am Ende wenn nichts gefunden.

Das ist genau das, was du auch machst, wenn du eine Telefonnummer in einer unsortierten Liste suchst: von oben nach unten durchgehen.

Inline-Trace für [3, 8, 1, 7, 5]

Target 7 (Treffer an Index 3):

iarr[i]arr[i] == 7?Aktion
03neinweiter
18neinweiter
21neinweiter
37jareturn 3

Target 99 (nicht im Array, erfolglose Suche):

iarr[i]arr[i] == 99?Aktion
03neinweiter
18neinweiter
21neinweiter
37neinweiter
45neinSchleife endet

Nach Schleife: return -1. Bei erfolgreicher Suche stoppt die Schleife sofort beim Treffer, bei erfolgloser Suche müssen alle n Elemente geprüft werden.

Implementierung

Beispiel-CodeJava
public static int linearSearch(int[] arr, int target) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == target) return i;
    }
    return -1;
}

In Java gibst du den Index bei Treffer zurück, sonst -1 für 'nicht gefunden'.

Beispiel-CodePython
def linear_search(arr, target):
    for i, value in enumerate(arr):
        if value == target:
            return i
    return -1

Python: enumerate() liefert Index und Wert in einem. Logik identisch zur Java-Variante.

Komplexität

FallVergleiche
Best Case (Element ist erstes)1
Average Case (Element gleichverteilt im Array, garantiert vorhanden)(n+1)/2 ≈ n/2
Worst Case (Element ist letztes oder fehlt)n

→ O(n) im Worst und Average Case. Die Average-Formel (n+1)/2 gilt unter der Annahme, dass das Element garantiert im Array vorhanden ist und jede Position gleich wahrscheinlich ist. Bei erfolgreicher Suche mit gleichverteiltem Treffer im Schnitt etwa n/2 Vergleiche. Bei erfolgloser Suche werden alle n Elemente geprüft, also genau n Vergleiche. Bei Trefferwahrscheinlichkeit p < 1 liegt der Erwartungswert irgendwo dazwischen, formal p · (n+1)/2 + (1-p) · n.

Klausur-Trace: lineare Suche Schritt für Schritt

Zwei typische Aufgabenstellungen aus echten Algorithmen-Klausuren:

Beispiel A: Treffer in der Mitte

Array [7, 2, 9, 4, 11] (Indizes 0..4), gesucht Target 9.

Iteriarr[i]arr[i] == 9?Vergleiche bisher
107nein1
212nein2
329ja → return 23

Drei Vergleiche, Index 2 zurück. Bei Target an Position k braucht lineare Suche genau k+1 Vergleiche.

Beispiel B: erfolglose Suche (Worst Case)

Gleiches Array, gesucht Target 5.

Iteriarr[i]arr[i] == 5?Vergleiche bisher
107nein1
212nein2
329nein3
434nein4
5411nein5

Nach Schleifen-Ende: return -1. Fünf Vergleiche, das ist der Worst Case bei n=5. Bei jeder erfolglosen Suche werden alle Elemente angefasst, der Aufwand ist exakt n Vergleiche, anders als bei der binären Suche gibt es keine Abbruchbedingung vor dem Array-Ende, weil ein unsortiertes Array keine Garantien über die Position des Targets liefert. Selbst wenn das Target an der vorletzten Position stehen würde, müsste man die letzte trotzdem prüfen.

Beispiel C: Klausur-Klassiker, erster Treffer bei Duplikaten

Array [4, 2, 4, 7, 4], gesucht Target 4. Standard-Variante liefert Index 0, nicht 2 oder 4. Die Schleife bricht beim ersten Match ab. Wenn die Klausur den letzten Treffer will, brauchst du eine angepasste Schleife (rückwärts iterieren oder Index in einer Variablen merken statt sofort zu returnen).

Eigenschaften

  • ✅ Funktioniert auf JEDER Liste, sortiert oder unsortiert
  • ✅ Einfach zu implementieren: 3 Zeilen Code
  • ✅ Kein Vorbereitungs-Aufwand: kein Sortieren nötig
  • ❌ Lineare Skalierung: bei einer Million Einträgen bis zu eine Million Vergleiche

Wann sinnvoll?

  • Bei kleinen Arrays: Overhead anderer Verfahren lohnt sich nicht. Die genaue Schwelle ist hardware-abhängig, in der Praxis liegt sie oft bei n < 10–30 (Cache-Lokalität und kleine Konstanten von linearer Suche schlagen den Overhead von binärer Suche).
  • Bei unsortierten Daten ohne Zusatzindex: Standard-Option ohne vorher zu sortieren. Mit Hash-Tabelle/Map auf den Daten geht's auch schneller.
  • Bei einmaligen Suchen: lohnt sich kein Sortier-Aufwand
  • Wenn das erste Vorkommen gesucht wird, nicht ein beliebiges

In der Praxis nutzen verschiedene Standard-Bibliotheken lineare Suche für Listen ohne Index, weil dort Random-Access nicht O(1) ist. Beispiele:

  • Java: List.contains(), List.indexOf() auf einer ArrayList/LinkedList sind linear. Für primitive Arrays: eigene Schleife oder Stream/Arrays.asList.
  • JavaScript: Array.prototype.indexOf() und Array.prototype.includes() sind linear.
  • Python: x in list und list.index(x) sind linear. Achtung: x in set und x in dict sind hash-basiert und durchschnittlich O(1), also nicht linear.
Teil 2·Visualisierung / Interaktiv

Interaktiv

Lineare Suche live

Schau zu, wie der Algorithmus Element für Element durchgeht. Der orange Highlight wandert von links nach rechts, bis er das Target findet (oder das Array zu Ende ist).

Probier folgendes:

  • Setz das Target auf einen Wert ganz vorne im Array: wenig Vergleiche
  • Setz das Target auf einen Wert ganz hinten im Array: viele Vergleiche
  • Setz das Target auf einen Wert außerhalb (z.B. 99): n Vergleiche, nicht gefunden

In dieser Visualisierung liegen kleinere Werte links und größere rechts, das ist nur eine Anzeigewahl. Allgemein hängt die Anzahl Vergleiche bei linearer Suche nur von der Position des Treffers ab, nicht vom Wert selbst.

Interaktive Visualisierung

Vergleicht lineare und binäre Suche mit Schritt-Counter pro Algorithmus.

Faustregel zum Mitnehmen: Lineare Suche ist O(n). Der Aufwand wächst genau proportional zur Eingabe-Größe. Bei 100 Elementen maximal 100 Vergleiche, bei einer Million entsprechend.


Code-Stepper: Lineare Suche Zeile für Zeile

Wir suchen die 7 im Array [3, 8, 1, 7, 5]. Du siehst den Index i wandern und nach jedem Vergleich den Counter vergleiche mitzählen. So wird sichtbar warum der Aufwand vom Index des Treffers abhängt, nicht vom Wert.

Interaktive Visualisierung

Interaktive Komponente: probiere sie im Topic-Player oben aus.

Teil 3·Quiz / Klausurfragen

Quiz

Klausurfragen mit Lösungen (6)

F1.Welche Komplexität hat die lineare Suche im Worst Case?

Antwort: O(n)

Erklärung: Im Worst Case ist das Element ganz hinten oder gar nicht im Array. Dann muss jedes der n Elemente einmal geprüft werden: O(n).

F2.Welche Voraussetzung hat die lineare Suche?

Antwort: Keine Voraussetzung: funktioniert auf jedem Array

Erklärung: Lineare Suche funktioniert auf jedem Array, sortiert oder nicht. Genau das ist ihr großer Vorteil gegenüber binärer Suche, die ein sortiertes Array verlangt.

F3.Du hast ein Array mit 1.000.000 Elementen, der gesuchte Wert ist ganz am Ende. Wie viele Vergleiche macht lineare Suche?

Antwort: Etwa 1.000.000

Erklärung: Im Worst Case: alle n Elemente werden einmal geprüft. Bei 1 Million Elementen sind das 1 Million Vergleiche. Genau deshalb skaliert lineare Suche schlecht für große Datenmengen.

F4.Was passiert bei diesem Code, wenn target NICHT im Array ist?
for (int i = 0; i < arr.length; i++) {
    if (arr[i] == target) return i;
}
return -1;

Antwort: Gibt -1 zurück

Erklärung: Wenn die Schleife durchläuft ohne `return i` zu erreichen, kommt das `return -1` am Ende dran. Das ist die Konvention für 'nicht gefunden'.

F5.Bei einem Array der Länge 50, wie viele Vergleiche macht lineare Suche im Average Case (Element gleichverteilt im Array, garantiert vorhanden)?

Antwort: 25 (Toleranz ±1)

Erklärung: Exakt `(n+1)/2 = 25,5`, gerundet ca. 25. Heuristik in Klausuren: `n/2 = 25`. Worst Case wäre 50, Best Case 1. Wenn das Element fehlen kann, hängt der Erwartungswert von der Trefferwahrscheinlichkeit ab.

Typ: Zahlen-Eingabe

F6.Lineare Suche kann auf einem unsortierten Array Werte finden.

Antwort: Wahr

Erklärung: Genau das ist ihr Hauptvorteil: keine Sortierung nötig. Sie prüft jedes Element der Reihe nach. Binäre Suche dagegen braucht zwingend ein sortiertes Array.

Typ: Wahr/Falsch

Zur KategorieAlgorithmen.Mehr Themen entdeckenZum Themen-Hub.

UniProMax ist eine themenbasierte Lernplattform für Studierende an deutschen Unis.

Wir glauben, dass Verstehen besser ist als Auswendiglernen. Wir bauen Lerneinheiten die zeigen statt erzählen. Code, Visualisierung, Quiz. Auf Deutsch.

Marke

UniProMaxUniProMax

Themenbasiert, visuell, interaktiv.

Inhalte

  • Alle Themen (Hub)
  • Programmiergrundlagen
  • Algorithmen
  • Mathematik
  • Statistik
  • Datenbanken
  • Rechnungswesen
  • VWL

Studiengang-Filter

  • Informatik
  • Wirtschaftsinformatik
  • BWL
  • Data Science
  • VWL
  • Wirtschaftsingenieurwesen
  • Mathe
  • Psychologie
  • weitere Studiengänge folgen

Plattform

  • Mein Fortschritt
  • Impressum
  • Datenschutz
© 2026 UniProMaxAlle Systeme onlinev0.2 / Sommersemester 2026
UniProMaxUniProMaxUniProMaxUniProMax