Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 3
Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 3
Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 3
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
3-18 Aufgaben und <strong>Lösungen</strong><br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
11 Suchen und Sortieren<br />
11.1 Einfache Suchverfahren<br />
Aufgabe 11.6.1 (T1)<br />
a) Was ist eine Marke im Zusammenhang <strong>mit</strong> Suchen in Arrays?<br />
b) Ist Suchen in Arrays oder in linearen Listen effizienter durchführbar?<br />
c) Was versteht man unter Radix-Suche?<br />
d) Wodurch unterscheiden sich die sequentielle und die binäre Suche?<br />
Lösung<br />
Aufgabe 11.6.2 (P3)<br />
Vergleich von binärer Suche und Interpolationssuche.<br />
• Erstellen Sie ein Array a[] <strong>mit</strong> 30 000 Integer-Zufallszahlen. Verwenden Sie dabei die<br />
Uhrzeit als Startwert für den Zufallszahlengenerator.<br />
• Ordnen Sie das Array in aufsteigender Folge <strong>mit</strong> einer beliebigen Sortierfunktion.<br />
• Schreiben Sie eine Funktion search_bin zum binären Suchen. Suchen Sie da<strong>mit</strong> in einer<br />
eine Million mal durchlaufenen Schleife nach zufällig ausgewählten Zahlen und geben Sie<br />
die <strong>mit</strong>tlere Anzahl der Intervallteilungen sowie die <strong>mit</strong>tlere Ausführungszeit aus.<br />
• Schreiben Sie eine Funktion search_int zur Interpolationssuche. Suchen Sie da<strong>mit</strong> in<br />
einer mindesten 1 Million mal durchlaufenen Schleife nach denselben Zufallszahlen wie <strong>mit</strong><br />
der binären Suche und geben Sie auch dafür die <strong>mit</strong>tlere Anzahl der Intervallteilungen sowie<br />
die benötigte Ausführungszeit aus. Warnung: es ist auf effiziente Implementierung und<br />
auf Rundungsfehler bei der Intervallteilung zu achten.<br />
• Vergleichen und interpretieren Sie die Ergebnisse für die binäre Suche und die Interpolationsuche.<br />
Lösung<br />
//************************************************************************<br />
// Vergleich der binären Suche und der Interpolationssuche<br />
//************************************************************************<br />
#include <br />
#include <br />
#include <br />
#define MAX 30000<br />
#define ESC 27<br />
void sort_insb(long int a[], long int n);<br />
long int srch_int(long int x, long int a[], long int n);<br />
long int srch_bin(long int x, long int a[], long int n);<br />
int count;<br />
//------------------------------------------------------------------------<br />
// Vergleich der binären Suche und der Interpolationssuche durch Suche<br />
// in einem <strong>mit</strong> Zufallszahlen vorbesetzten und danach geordneten Feld.<br />
//------------------------------------------------------------------------<br />
int main() {<br />
long int c=0, i, k, a[MAX], n=MAX, m=100;<br />
float sum;