Académique Documents
Professionnel Documents
Culture Documents
Leçon 2 : Complexité
Algorithme 1 (évident) :
def fib1(n):
if n < 2:
return n
else:
return fib1(n - 1) + fib1(n - 2)
n TAlgo1(n)
20 1 msec
40 15 sec
50 30 min
def fib2(n):
f1, f2 = 0, 1
for k in range(n):
f1, f2 = f2, f1 + f2
return f1
n TAlgo1(n) TAlgo2(n)
20 1 msec 0,1 µsec
40 15 sec 0,2 µsec
50 30 min 0,25 µsec
100 1,5 millions d’années 0,5 µsec
120 > l’âge de l’univers 0,6 µsec
1000000 ??? 5 msec
1000000000 ??? 5 sec
Bien sûr, trier le tableau et renvoyer tab[k] donne le résultat. Mais est-ce
vraiment nécessaire de tout trier ?
Pouvez-vous faire mieux ?
4. Ecrivez une fonction qui regroupe les éléments d’un tableau composé
exclusivement des entiers -1, 0 et 1 de façon à ce que tous les -1 soient
au début, suivis des 0 et, finalement des 1. Par exemple, le tableau
[0, -1, 0, 0, 1, 1, -1, 0, -1, -1, -1, -1, 1]
donnerait
[-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1]
Bien sûr, trier le tableau donne le résultat. Mais est-ce vraiment
nécessaire de trier ?