**Dies ist eine alte Version des Dokuments!**
Suchen und Sortieren
Weiter zu Binäre Suche
Direkt zu Sortieren
Lernziele lineare und binäre Suche:
Mit TigerPython :| Lade die Datei null79.py herunter und speichere sie im selben Ordner wie dein Code.
Du kannst das Telefonbuch wie folgt importieren und den Namen für eine Telefonnummer herausfinden. Der Code muss im gleichen Ordner wie null79.py abgespeichert werden!
from null79 import names, numbers index = 42 name = names[index] telnr = numbers[index] print("Die Telefonnummer von " + name + " ist " + telnr)
</nodisp>
Aufgabe A4: Maximal sächsehalb Jahr lang
Wir möchten genau wissen, wie lange die Suche dauert, auch wenn es hoffentlich nicht 6.5 Jahre sind.
Um in Python die Zeit zu stoppen, kannst du das time Modul verwenden. Wie lange dauert die Suche für die Lyanna? Wie lange für Annina? Weshalb der Unterschied?
import time start = time.time() # do something elapsed = time.time() - start print("do something took " + str(elapsed) + "s")
Aufgabe A5: Umgekehrte Suche
Finde heraus, wem die Telefonnummer 0791234567 gehört.
Aufgabe A6: Verbesserte lineare Suche (optional)
Wenn wir nach einem Namen suchen, der gar nicht in der Liste vorkommt, z.B. Alaska, so dauert die Suche lange, weil die ganze Liste durchsucht wird.
Nun sind die Namen in null79.names alphabetisch sortiert. Sobald wir einen Namen antreffen, der alphabetisch nach dem gesuchten Wert liegt, können wir die Suche abbrechen. Strings können in Python mit den > und < Operatoren verglichen werden:
s1 = 'Alaska' s2 = 'Alberta' if s1 < s2: print(s1 + ' liegt im Alphabet vor ' + s2) else: print(s1 + ' liegt im Alphabet nach ' + s2)
Erweitere deine Funktion linear_search() wie folgt:
- Füge einen Parameter mit Default-Argument
is_sorted=Falsehinzu. - Wenn die Liste nicht sortiert ist, soll die Suche wie bisher ablaufen.
- Ist die Liste sortiert, soll die Suche abbrechen, wenn wir im Alphabet bereits weiter sind als der gesuchte Wert.
Aufgabe A7: Besserer Algorithmus? (optional)
Hast du eine Idee für einen besseren, sprich effizienteren Suchalgorithmus einer bereits sortierten Liste? Bespreche mit der Lehrperson und implementiere danach in Python.
Weiter zu Binäre Suche