giovedì 21 gennaio 2021

Algoritmi in pillole: ricerca del massimo (o del minimo :)

 L'algoritmo inizia assumendo che il massimo è il primo elemento del vettore; confronta il valore massimo con il secondo elemento. Se quest' ultimo è maggiore del massimo aggiorna il valore del massimo con il secondo valore. Esamina così tutti gli altri elementi del vettore. 


pseudocodice:
"il massimo è il primo elemento ;
per ogni valore di i da 1 a N-1:se x[i] è maggiore del massimo trovato finora
allora x[i] è il nuovo massimo."

Codice:
int findMax(int v[], int n) {
int i,max; 
    max = v[0];
    for (i = 1; i < n; i++) 
    if (v[i] > max) max = v[i];
    return max;
}
Codice con restituzione dell' indice del massimo:
int findMax(int v[], int n) {
int i,max=0; 
    for (i = 1; i < n; i++) 
    if (v[i] > v[max]) max = i;
    return max;
}
La complessità computazionale asintotica è O(n).
Caso peggiore: array ordinato in senso crescente - T. esec. prop. a n
Caso migliore: array già ordinato in senso decrescente  - T. esec. prop. a n