3.3.3 Sortieren und Suchen
Binäres Suchen – zuerst sortieren und dann suchen
Das binäre Suchen benötigt als Voraussetzung:
- die sortierte Liste, in der gesucht werden soll (je nach den Elementen in der Liste aufsteigend, absteigend, alphabetisch oder lexikographfisch)
- die Liste wird wiederholt halbiert
In der Abbildung 1 ist der Algorithmus des binären Suchens dargestellt, wobei die Elemente (Ganzzahlen) in der Liste »liste2« aufsteigend sortiert sind.
In den Tabellen 1 und 2 ist Schritt für Schritt die Suche nach den Ganzzahlen -120 und 100 in der aufsteigend sortierten Liste [-235, -120, -4, -2, 0, 8, 12, 34, 54, 98] dokumentiert.
Aufgabe A34
Durchlaufe Schritt für Schritt den in der Abbildung 1 dargestellten Algorithmus, um in der Liste [-235, -120, -4, -2, 0, 8, 12, 34, 54, 98] die folgenden Ganzzahlen zu suchen:
- 0
- 54
- 100
- -235
- -300
Dokumentiere die Suche in Tabellen – so wie in den Tabellen 1 und 2.
Beantworte die Frage, weshalb die Elemente (Ganzzahlen) der Liste für das Suchen sortiert sein müssen.
Aufgabe 35
Implementiere ein Programm »binsuche.py« am Computer.
Das Programm soll aus vier Teilen bestehen:
- der Callback-Funktion »eingeben«, um die Elemente (Ganzzahlen) der Liste »liste1« einzugeben
-
der Callback-Funktion »sortieren«, um die Liste »liste1« mit Hilfe der Methode
»liste2=sorted(liste1)« in die sortierte Liste »liste2« zu überführen - der Callback-Funktion »suchen«, um in der sortierten Liste »liste2« nach einer Ganzahl »gesucht« zu suchen
- der grafischen Benutzeroberfläche – dem Hauptfenster den darauf platzierten mit Widgets
Führe das Programm aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht.
- Eingeben der Ganzzahlen 54, 0, 34, -120, 8, -235, 8, 98, -2, 12 als Elemente in die Liste »liste1«
- Sortieren, indem die Liste »liste1« die sortierte Liste »liste2« überführt wird
- Suchen, indem u. a. die folgenden Ganzzahl in der sortierten Liste »liste2« gesucht werden:
- 0
- 54
- 100
- -235
- -300
In der Abbildung 2 ist eine mögliche grafische Benutzeroberfläche des Programms – das Hauptfenster mit den darauf platzierten Widgets – dargestellt.
- [1] Das Hauptfenster kann selbstverständlich auch anders und farbenfroher gestaltet werden.