Sei mal dahingestellt ob die Funktion so schon gut ist, darum soll es hier nicht gehen, nehme aber natürlich gerne Vorschläge entgegen wie das besser gehen könnte.
Du vergleichst hier jeden Wert immer mit dem links und dem rechts. Du könntest die Anzahl Vergleiche minimieren.
Durchwandere die Liste - wie du es auch tust - von links nach rechts. Merk dir aber, ob du zuletzt aufwärts, abwärts oder gerade marschiert bist.
Solange es aufwärts geht musst du nicht auf Minimum prüfen (da es ja links von dir abwärts geht); solange es abwärts geht auch nicht (da es ja links von dir aufwärts und rechts von dir abwärts geht). Genau dann wenn deine Wanderung von abwärts direkt nach aufwärts wechselt, hast du ein Minimum gemäss deinem Algo gefunden. Ich habe es getestet. Dein Algo benötigt (Compiler:nicht vollständige boolesche Auswertung) im Schnitt mindestens (mindestens, weil es sicher schnelleren Code gibt als meinen) 28% mehr Zeit. Wenn du den Algo in eine Auto- oder Flugzeugsteuerung einbaust lohnt sich eine Anpassung und sonst (O(N) sind öde Probleme
) nicht.