URL:         /axel/informatik2_ss01_blatt1.html
Dieses  Übungsblatt ist in Zweiergruppen zu
bearbeiten. Auf dem Blatt  bitte Übungsgruppentag angeben. Um
den Übungsschein zu erhalten muß man 50% der  (Theorie)Punkte
erreichen und zweimal erfolgreich eine Aufgabe vorrechnen.  Auch bei
den Programieraufgaben müssen 50% erreicht werden.
Aufgabe 1 - binäres Suchen - (4 Punkte)
In der Vorlesung wurde  skizziert , dass der Aufwand
beim binären Suchen in einem sortierten Feld  der Länge
n  O(log n) ist.
Geben Sie hierfür einen  vollständigenBeweis.
 
 
Aufgabe 2 - priority queue - (4+2 Punkte)
Beim Heapsort  wird in der ersten Phase innerhalb
eines Feldes ein sog. Haufen angelegt.  Erläutern Sie, wie 
eine Variation dieser Idee verwendet werden kann, um  folgende 
Aufgabe eines Betriebssystems zu   lösen:
In einem Betriebsystem (z.B. Linux)  kann es maximal 
P  Prozesse  ( das sind zu erledigende  Aufgaben) P1,..,PP 
geben. Diese Prozesse sind von unterrschiedlicher Priorität (Wichtigkeit) 
W1,....,WP.  Die Prozesse  könnten eigentlich gleichzeitig 
laufen, aber auf dem Rechner,  der leider nur eine  CPU hat,
kann immer nur ein Prozess laufen.
Wie kann mit  einer Variation des Haufens erreicht
werden, dass immer der Prozess mit der höchsten Priorität als
nächster gestartet wird. Skizzieren Sie, was  bei folgenden 
Aktionen passiert:
-  Erzeugen eines neuen Prozess  mit Priorität 
W
-  Suche nach dem  wichtigsten Prozess , der
neu gestartet werden soll.
Zeigen Sie, dass der Aufwand jeweils O(log p) ist.
Aufgabe 3 - Programmieraufgabe (5 Punkte, Abgabe per email bis 10.5.01 10.00 Uhr)
diese Programmieraufgabe ist zu bearbeiten.
Erweitern Sie  folgendes C Programm  mit einer 
Implementierung des  bubblesort. Dazu soll die Routine
my_bubblesort_xxxxxx() ersetzt werden. Der Name soll
statt der xxxxxx Ihre Matrikelnummer enthalten.
Die Zahlen sollen aufsteigend sortiert werden.
 
#include <stdlib.h>Bei der per email an inf2_abgabe_ss01@btm2x2.mat.uni-bayreuth.de abgegebenen source code datei
int feld[] = {3,4,6,3,8,9,3,4,6,8};main()
{
int i;my_bubblesort_000000(feld, sizeof(feld)/sizeof(int) );
for (i=0; i<sizeof(feld)/sizeof(int); i++)
printf("%d ",feld[i]);
printf("\n");
}
my_bubblesort_000000(int *feld, int feld_laenge)
/* hier muss eingefügt werden */
{
}