Temps d'exécutions
2006-12-06 22:17
Tiré du livre Introduction à l'algorithmique 2e édition, de Cormen, Leiserson, Rivest, Stein
| n | 1 seconde | 1 minute | 1 heure | 1 jour | 1 mois | 1 an | 1 siècle |
|---|---|---|---|---|---|---|---|
| lg n | 1 = log(n)*10^-6; 10^6=log(n); n=2^(10^6) | ||||||
| √n | |||||||
| n | 1 = n*10^-6; n=10^6 | 60=n*10^-6; n=10^6*60 | 3600 = 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 | |||||||
| n² | |||||||
| 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...
- Code source C++ du RedBlackTree (documentation doxygen)
Vos commentaires
- correcteur orthographique > Pour rester dans le sujet de la page, j'essaierai d'adopter la syntaxe adéquate ;-) s/parcoure/parcourt; s/parmis/parmi; if ($i==trouvez) { $j=~s/imaginer/imaginez; } else { if ($i==imaginer) { $j=~s/trouvez/trouver; } print "vive les boucles" } (2006-06-28 17:06:40)
- olidz > Placer la condition identifiant l'élément différent juste avant la boucle et le traiter (afficher) dans le bloc correspondant à cette condition. (2004-03-18 12:50:00)
