30.11.2012 Aufrufe

Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 3

Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 3

Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 3

MEHR ANZEIGEN
WENIGER ANZEIGEN

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;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!