Der binäre Suchalgorithmus

Die Liste halbieren

Der binäre Suchalgorithmus arbeitet, indem er die Liste zunächst sortiert (siehe Sortieralgorithmen) und dann das gesuchte Element mit dem Eintrag "in der Mitte" der sortierten Liste vergleicht. Ist er kleiner, wendet er das Verfahren rekursiv auf die Argumente links des mittleren Arguments an. Ist er größer, wendet er das Verfahren rekursiv auf die Argumente rechts des mittleren Arguments an. Das geschieht, bis das gesuchte Argument gefunden wird.

Idee

Idee der binären Suche

Algorithmus

def quicksort(liste):
   ...

def binaereSuche(gesuchteZahl, liste, indexVorsprung):
   if len(liste) == 0:
       print("Zahl nicht gefunden")
       return None
   if gesuchteZahl==liste[math.floor(len(liste)/2)]:
       return (math.floor(len(liste)/2)) + indexVorsprung
   elif gesuchteZahl < liste[math.floor(len(liste)/2)]:
       return binaereSuche(gesuchteZahl, liste[:math.floor(len(liste)/2)], indexVorsprung)
   else:
       return binaereSuche(gesuchteZahl, liste[math.floor(len(liste)/2)+1:], indexVorsprung+math.floor(len(liste)/2)+1)

Aufgabe 3

(a) Vergleiche auch diesen Algorithmus mit deinem Suchalgorithmus. In welchen Fällen ist dein Algorithmus deiner Meinung nach schneller als binaereSuche? In welchen ist er langsamer, oder ist es vielleicht sogar der gleiche Alogrithmus?

Anmerkung: Wenn Du Probleme mit diesem Algorithmus hast, führe ihn einmal von Hand an zwei oder drei Beispielen aus.

(b) Überprüfe deine Hypothese, indem Du die Laufzeit der beiden Algorithmen mit den Dir bekannten Methoden vergleichst.

(c) Vergleiche binaereSuche auch mit naiveSuche, wenn du das nicht schon implizit durch den Vergleich mit deinem Algorithmus gemacht hast. Was fällt dir auf?

X

Fehler melden

X

Suche