Maximalwert in einem Array finden

Hi,

gibt es einen optimierten Algorithmus, um den Maximalwert in einem uint16_t Array moeglichst schnell zu finden?

Die Version

  • vergleiche Eintrag 0 und 1
  • speichere den groesseren
  • vergleiche Eintrag 2 und den gespeicherten
  • speichere den groesseren usw.

ist gerade meine einzige Idee, aber sie gefaellt mir nicht.

Das ist doch bestimmt ein Standardprogrammierproblem...

Danke, Helmuth.

Ein optimierter Algorithmus ist mir nicht bekannt. Würde ebenfalls deinen Pseudo Code nun vorschlagen. Wo ist nun genau dein Problem, denke dass ist mehr als schnell genug. Einfach innerhalb einer Schleife abfragen ist doch sofort erledigt.

Ja, das funktioniert so.

Aber gerade bei einer Funktion, welche ein paar tausendmal pro Sekunde aufgerufen wird, lohnt sich eine Optimierung immer.

Dass man viel Rechenpower hat, sollte ja nicht dazu fuehren, damit schlampig umzugehen...

Und bevor ich das Rad neu erfinde, frage ich, ob das schon jemand vor mir gemacht hat.

Es geht uebrigens um die Skalierung eines dynamischen Farbhistogramms.

edit: Ich habe neulich in einer XY Index Berechnung (welche ca. 200.000x pro Sekunde aufgerufen wird) ein einziges unnoetiges "if" innerhalb der Schleife entfernt, was den Programmablauf um 3 Prozent(!) beschleunigt hat.

Vielleicht ist es ratsam, nicht im Nachhinein das gesamte Arrayzu durchsuchen, sondern bereits den Maximalwert beim Befüllen des Arrays herauszufinden.

Das ist doch schonmal eine super Idee, den extra Loop wegzulassen! Danke, sth77!