Temps d'exécutions

2006-12-06 22:17

Tiré du livre Introduction à l'algorithmique 2e édition, de Cormen, Leiserson, Rivest, Stein

si le problème prend f(n) microsecondes (1 x 10^-6) s
n1 seconde1 minute1 heure 1 jour1 mois1 an1 siècle
lg n1 = log(n)*10^-6; 10^6=log(n); n=2^(10^6)
√n
n1 = n*10^-6; n=10^660=n*10^-6; n=10^6*603600 = n*10^6; n=10^9*3,6 3600*24=n*10^-6; n=10^6*86400; n=10^9*86,4 3600*24*30=n*10^-6; n=10^6*2592000; n=10^12*2,592 3600*24*365=n*10^-6; n=10^6*31536000; n=10^12*31,536
n lg n
2n
n!

La boucle optimisée

2004/03/02 20:23

Imaginez une boucle qui parcourt et affiche une liste de n éléments. Parmi la liste, il existe un élément qui est différent (il requiert un affichage différent). On utilise donc une condition dans la boucle pour l'identifier. Trouvez une façon de réduire le nombre total de comparaisons de n/2 en moyenne. On ne connaît pas la position de l'élément différent.

// ancienne boucle:
for ( i=0; i < n; i++ ) {
 if ( element[i] == different ) {
   affichageDifferent(element[i]);
 } else {
  affichage(element[i]);
 }
}

Hyperliens...