2025-10-15 09:54:55 +02:00
# Ex 2
```py
def function_1(tableau1, tableau2):
presentDansDeuxListes = 0
for nombre1 in tableau1: # O(n)
for nombre2 in tableau2: # O(n²)
if nombre1 == nombre2:
presentDansDeuxListes += 1
break
return presentDansDeuxListes
```
cette fonction à une complexité de **O(n²)**
---
```py
def function_2(x):
valeur = 0
while x > 0: # O(n)
valeur = valeur + x
x -= 1 # si x = 300, on passe dans le while 300 fois
return valeur
```
cette fonction a une complexité de **O(n)**
---
```py
def function_3(x):
valeur = 0
if x < 0:
valeur = -x
if x == 0:
pass
if x > 0:
valeur = x
return valeur
```
cette fonction a une complexité de **O(1)**
# Ex 3
```py
def entree_tri_fusion_multi(tab):
2025-10-15 10:53:18 +02:00
tab = [tri_fusion(sub_tab) for sub_tab in tab] # Appliquer le tri fusion à chaque sous-tableau
return sorted(tab, key=sum) # Trier les sous-tableaux par la somme de leurs éléments
2025-10-15 09:54:55 +02:00
def tri_fusion(tab):
if len(tab) < = 2:
if tab[0] > tab[-1]:
return tab[::-1]
return tab
mid = len(tab) // 2 # Trouver le milieu du tableau
left = tri_fusion(tab[:mid]) # Diviser et trier la moitié gauche
right = tri_fusion(tab[mid:]) # Diviser et trier la moitié droite
return fusion(left, right) # Fusionner les deux moitiés triées
def fusion(left, right):
result = []
i = j = 0
while i < len ( left ) and j < len ( right ) : # Tant qu ' il reste des éléments dans les deux sous-tableaux
if left[i] < right [ j ] : # Comparer les éléments des deux sous-tableaux
result.append(left[i]) # Ajouter l'élément de gauche s'il est plus petit
i += 1
else:
result.append(right[j]) # Ajouter l'élément de droite sinon
j += 1
result.extend(left[i:]) # Ajouter les éléments restants de gauche
result.extend(right[j:]) # Ajouter les éléments restants de droite
return result
```
---
```py
from tri_fusion import entree_tri_fusion_multi
2025-10-15 10:53:18 +02:00
tab = [[38, 27, 43, 3, 9, 82, 10], [1, 2, 3], [5, 4, 6], [12, 11]]
2025-10-15 09:54:55 +02:00
sorted_tab = entree_tri_fusion_multi(tab)
print("Tableau trié :", sorted_tab)
```
```bash
2025-10-15 10:53:18 +02:00
Tableau trié : [[1, 2, 3], [4, 5, 6], [11, 12], [3, 9, 10, 27, 38, 43, 82]]
2025-10-15 09:54:55 +02:00
```
2025-10-15 10:53:18 +02:00
La complexité de l’ algorithme est **O(k · n log n)** , où ** *k*** est le nombre de sous-tableaux et ** *n*** leur taille moyenne.
Chaque sous-tableau est trié par tri fusion en **O(n log n)** , puis la liste des sous-tableaux est triée par somme en **O(k log k)** , ce qui est négligeable devant le terme dominant.
2025-10-15 09:54:55 +02:00