Grösstes element in array: return index : gehts noch schneller?
-
Hallo,
ich habe ein array mit prioritäten und will 2 dinge machen:- Ich will die höchste priorität extrahieren
- Alle anderen elemente um 1 inkrementieren
ich habe folgendes am laufen und glaube es geht noch schneller zu realisieren:
int max = 0; for(int idx = 1; idx < m_dimension; idx++) { if(m_priority[idx] > m_priority[max]) { m_priority[max] += 1; max = idx; } else m_priority[idx] += 1; } m_priority[max] = 0;wären z.B Pointer schneller?
Danke euch für eure ratschläge...
-
m_priority ist ein Zeiger! Man kann auf den else-Zweig verzichten.
int max = 0; for(int idx = 0; idx < m_dimension; idx++) if(m_priority[idx]+++1 > m_priority[max]) max = idx; m_priority[max] = 0;
-
@balduin: ja, damit's nachher keiner mehr lesen kann. Und wird wahrscheinlich auch nicht schneller laufen deswegen.
-
int max = 0; for(int idx = 0; idx < m_dimension; idx++) { ++m_priority[idx]; if(m_priority[idx] > m_priority[max]) max = idx; }