Hallo liebes Forum
! Dies hier ist mein erster Beitrag hier und ich bin gerade sehr sehr verzweifelt. Es geht um die Lösung einer Aufgabe, bei der ich gerade vor einer sprichwörtlichen Wand stehe. Wenn ihr mir dabei irgendwie helfen könntet wäre ich extrem dankbar.
Die Aufgabe lautet wie folgt:
Sei int a[] ein Array der Länge n, dessen Werte eine unimodale Sequenz sind. D.h. es gibt einen Index p, so dass a[0] < a[1] < ...< a[p] > a[p+1] > ...> a[l-2] > a[l-2] gilt.
Bis zum Index p steigen die Werte an, danach fallen sie wieder ab.
Entwerfen Sie einen (rekursiven) Algorithmus, der den Peak-Index p in Zeit O(log(n)) ndet. Weisen Sie nach, dass Ihr Algorithmus die geforderte Laufzeit hat.
Verwenden Sie die zur Verfügung gestellten Zeilen, um den Algorithmus darzustellen.
Geben Sie die Lösung durch jeweils ein Leerzeichen getrennt ein (Lösung unter Angabe der Zahlen/Buchstabenangabe die jeweils vor den Zeilen unten stehen). Verwenden Sie nur Grossbuchstaben und ergänzen Sie geschweifte schliessende und öffnende Klammmern, wo sie nach den üblichen Regeln benötigt werden.
Zur Verfügung gestellte Zeilen:
1A return unimodal(a,start,mitte);
1B return unimodal(a,start,mitte+1)
2A mitte = (start+ende)/2;
2B mitte = start + ende/2;
3A if ( a[mitte] > a[mitte+1])
3B if ( a[mitte] < a[mitte+1])
4 else
5A return start;
5B return ende;
6 else
7 int unimodal (int a[], int start, int ende)
8A if (ende == start+1)
8B if (ende == start)
9A return unimodal(a,mitte,ende);
9B return unimodal(a,mitte+1,ende);