Philipp schrieb:
> Also muss ich sowas machen: Berg raufklettern, höchsten Punkt finden und
> dann erst wieder einen neuen höchsten Punkt suchen, wenn ich in einem
> Tal war.
Jupp
Das wäre auch mein Ansatz
abwechselnd Maximum und Minimum suchen
wobei das Problem eigentlich nur am Anfang besteht: Womit fängt man an?
Sucht man ein Maximum oder ein Minimum (lässt sich aber lösen, indem man
sich den/die nächsten Punkte ansieht, wie dort die 'Steigung' verläuft.
Ist sie positiv dann gilt der erste Punkt schon als Minimum und man
sucht ein Maximum. Ist sie negativ, dann gilt der erste Punkt schon als
Maximum und man sucht ein Minimum. Steigung 0 gilt nicht, dann muss man
eben den übernächsten Punkt betrachten, fff)
Und dann gehts eigentlich immer so dahin
1 | schleife über alle Elemente {
|
2 |
|
3 | if modus == maximum suchen
|
4 | if steigung < 0 then
|
5 | maximum gefunden
|
6 | entscheiden ob man es aufheben will (nur die 2 Größten)
|
7 | modus = minimum suchen
|
8 |
|
9 | else if modus == minimum suchen
|
10 | if steigung > 0 then
|
11 | modus = maximum suchen
|
12 | }
|
nur so als Codeskizze
Der letzte Punkt bedarf noch einer Sonderbahandlung. Er könnte ja ein
Maximum sein, obwohl es keinen Steigungswechsel mehr gibt. Einfach in
die Funktion, die entscheidet, ob man ein Maximum aufheben will als
"Maximum" einfliessen lassen. Wenn er tatsächlich ein Maximum ist, dann
hebt ihn sich die Funktion dann schon auf.