Grösstes element in array: return index : gehts noch schneller?



  • Hallo,
    ich habe ein array mit prioritäten und will 2 dinge machen:

    1. Ich will die höchste priorität extrahieren
    2. 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;
    }
    

Anmelden zum Antworten