1.7 KiB
1.7 KiB
RAPPORT
EXO2
-
function_1(tableau1, tableau2) :
- Complexité algorithmique : O(n * m)
- Dans le pire cas, où
n
est la taille du tableau 1 etm
la taille du tableau 2.
- Dans le pire cas, où
- Complexité algorithmique : O(n * m)
-
function_2(x) :
- Complexité algorithmique : O(x)
- La boucle
while
faitx
itérations, etx
est décrémentée de 1 jusqu'à 0.
- La boucle
- Complexité algorithmique : O(x)
-
function_3(x) :
- Complexité algorithmique : O(1)
- En fonction de la valeur de
x
, une des trois conditions exécute une opération simple.
- En fonction de la valeur de
- Complexité algorithmique : O(1)
EXO3
Pour cette fonction, on a :
- La première boucle for : O(g)
- Malloc : O(1)
- Deuxième boucle for : O(g * n)
- Bubblesort : O(g * n²)
- Free : O(1)
- find_rank_student : O(g * n²) pour Bubblesort + O(g * n) : O(g * n^3)
Simplification :
- On peut enlever les O(1) et conserver la complexité la plus élevée, donc O(g * n^3).
Complexité algorithmique pour sort_student : O(g * n^3)
EXO4
Voici le code :
def tri(t):
for tab in t:
for i in range(len(tab)):
for j in range(len(tab) - 1):
if tab[j] > tab[j + 1]:
tab[j], tab[j + 1] = tab[j + 1], tab[j]
for i in range(len(t)):
for j in range(len(t) - 1):
if t[j][0] > t[j + 1][0]:
t[j], t[j + 1] = t[j + 1], t[j]
print(t)
tri([[3, 9, 6], [9, 3, 8], [10, 67, 55]])
Complexité algorithmique de ma fonction tri() :
- Pour m éléments, la complexité algorithmique de chaque sous-liste est O(m²), multipliée par le nombre de sous-listes, cela fait : O(n * m²).
- Pour le tri final, la complexité algorithmique est O(n²).
On garde la plus élevée, donc pour ma fonction : O(n * m²) + O(n²).