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)

== Aufgabe == Verwende deine `linear_search()` Funktion, um die richtige Telefonnummer von Lyanna herauszufinden. Wie lange dauert die Suche? <nodisp 2> ++++Lösung mit Code

</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.

Lösung

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=False hinzu.
  • 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

  • gf_informatik/suchen_und_sortieren.1761747083.txt.gz
  • Zuletzt geändert: 2025-10-29 14:11
  • von gra