Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Ich weiß zwar nicht, ob ich ein "echter" Informatiker bin, aber in der ersten Aufgabe habe ich an einem Spezialfall (alle Listenelemente bis auf Maximum und Minimum gleich groß) versucht zu zeigen, daß man diesen meiner Meinung nach nicht mit einem Algorithmus der Laufzeit O(log n) abhandeln kann.
Quoted
Original von Zypressen Hügel
können mir mal die "echten" informatiker hier bestätigen, dass sich aufgabe 1 nicht lösen lässt, weder mit monoton listen noch mit streng monotonen listen...
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Ich gehe jetzt mal davon aus, daß du mit i und j den Anfang bzw. das Ende der Liste meinst.
Quoted
Original von MAX
Mit einem rekursiven Aufruf ist natürlich nichts getan. Aber was ist wenn man zwei rekursive Aufrufe derart max(liste,i,mitte) und max(liste,mitte+1,j) hinereinander aufruft.
Das ist ja gerade das Problem. Es *muß* ein Teil der Liste verloren gehen, wenn man auf eine Laufzeit von O(log n) kommen will.
Quoted
Dann ist doch gewährleistet, dass kein Bereich der Liste verlorengeht.
![]() |
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
procedure max(var a: feld; i,j : integer; var m: integer); var m1,m2,mitte : integer; begin if i = j then m:=a[i] else if i = j - 1 then begin if a[i] < a[j] then m:=a[j] else m:=a[i] end else begin mitte:=(i+j) div 2; max(a,i,mitte,m1); max(a,mitte+1,j,m2); if m1 < m2 then m:=m2 else m:=m1 end end; |
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Habe mir den Algorithmus mal angeschaut. Hier nochmal kurz eine Beschreibung der Funktionsweise:
Quoted
Original von MAX
Ein Algorithmus gefunden, der in einem linearen Feld (Liste) das Maximum findet. Dieser Algorithmus nützt das Devide-and-Conquer Verfahren.