Salve!
Ho iniziato questo mese il corso di strutture dati, e da subito ci è stato insegnato a ottimizzare ogni programma in C che svolgiamo, minimizzando prima di tutto il tempo di esecuzione, poi lo spazio occupato in memoria.
Bene, in una slide in cui si calcola i passi di un algoritmo c'è scritto:
sum=0; [1 passo]
for (i=1;i<N;i++) [$2*N$ passi$]
for (j=i;j<N;j++) [$2*(sum_{i=1}^N (N+1-i))$ passi]
sum=sum+1; [$sum_{i=1}^N (N+1-i)$ passi]
return sum; [$1$ passo]
Si calcolano i passi (unità di tempo necessari alla compilazione di un algoritmo. Ma ci sono diversi punti oscuri.. Perchè mai il primo for ha $2*N$ passi, perchè il secondo for ne ha $2*sum_{i=1}^N (N+1-i) $, perchè l'argomento della for ha $sum_{i=1}^N (N+1-i)$ istruzioni?
Non riesco a capire come si contano questi passi...
E' un argomento che mi mette un po' in difficoltà...