Vertiefung der Programmierung

Suchen

Motivation

Motivation

Wann muss
ich Daten
suchen?

Matrikelnummer x?

Bericht-2025.pdf?

Lineare Suche (Prinzip)

Systematisches Suchen

funktioniert bei (fast) jeder
Datenstruktur

➔ Lineare Suche

Best case1
Average case​n
Worst casen

n Elemente →

⌨️ Lineare Suche (Beispiel)

Live
coding

Geht es noch schneller?

Bild ist gemeinfrei

Analogie: Wörterbuch

⚠️ Annahmen

  • Einträge sind vorsortiert 
  • wahlfreier Zugriff (auf Einträge)

Bild: Lizensiert durch Adobe Stock Archiv

Wie suche
ich ein Wort
?

Binäre Suche (am Beispiel)

pencil

live

Bild: Lizensiert durch Adobe Stock Archiv

Binäre Suche (Algorithmus)

Best case1
Average case​log(n)
Worst caselog(n)
BinaereSuche(array, ziel):

    links  ← 0
    rechts ← Länge(array) - 1

    solange links ≤ rechts:

        mitte ← (links + rechts) / 2

        wenn array[mitte] = ziel:
            gib mitte zurück

        sonst wenn array[mitte] < ziel:
            links ← mitte + 1

        sonst:
            rechts ← mitte - 1

    gib -1 zurück
  • Teile Daten in linke/rechte Hälfte
  • Gehe zu Mitte:
    • Suchwert == Mitte ?  
       Gefunden
    • Suchwert > Mitte ?  
      Nach Rechts
    • Suchwert < Mitte ?
      Nach Links
  • Wiederhole bis: Größe Liste == 1

Zusammenfassung

  • Lineare Suche funktioniert in (fast) allen Datenstrukturen:

    • Wir durchlaufen jedes Element, bis entweder

      • das gesuchte Element gefunden wurde

      • das Ende der Datenstruktur (u.a. Liste) erreicht

  • Binäre Suche ist schneller bei vielen Elemente

    • Voraussetzungen:

      • Elemente sind vorsortiert

      • wahlfreier Zugriff auf Daten möglich