forked from menault/TD4_DEV51_Qualite_Algo
fin du td
This commit is contained in:
10
README.md
10
README.md
@@ -47,7 +47,8 @@ cette fonction a une complexité de **O(1)**
|
|||||||
|
|
||||||
```py
|
```py
|
||||||
def entree_tri_fusion_multi(tab):
|
def entree_tri_fusion_multi(tab):
|
||||||
return [tri_fusion(sub_tab) for sub_tab in tab] # Appliquer le tri fusion à chaque sous-tableau
|
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
|
||||||
|
|
||||||
def tri_fusion(tab):
|
def tri_fusion(tab):
|
||||||
if len(tab) <= 2:
|
if len(tab) <= 2:
|
||||||
@@ -79,15 +80,16 @@ def fusion(left, right):
|
|||||||
```py
|
```py
|
||||||
from tri_fusion import entree_tri_fusion_multi
|
from tri_fusion import entree_tri_fusion_multi
|
||||||
|
|
||||||
tab = [[5, 2, 9, 1, 5, 6], [3, 0, -1, 8, 7], [10, 20, 15, 30]]
|
tab = [[38, 27, 43, 3, 9, 82, 10], [1, 2, 3], [5, 4, 6], [12, 11]]
|
||||||
sorted_tab = entree_tri_fusion_multi(tab)
|
sorted_tab = entree_tri_fusion_multi(tab)
|
||||||
print("Tableau trié :", sorted_tab)
|
print("Tableau trié :", sorted_tab)
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Tableau trié : [[1, 2, 5, 5, 6, 9], [-1, 0, 3, 7, 8], [10, 15, 20, 30]]
|
Tableau trié : [[1, 2, 3], [4, 5, 6], [11, 12], [3, 9, 10, 27, 38, 43, 82]]
|
||||||
```
|
```
|
||||||
|
|
||||||
La complexité de l'algorithme de tri fusion est **O(n log n)** pour chaque sous-tableau, où *n* est la taille du sous-tableau. Comme `entree_tri_fusion_multi` applique le tri fusion à chaque sous-tableau indépendamment, la complexité totale dépend de la somme des tailles des sous-tableaux, mais chaque tri reste en **O(n log n)**.
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
Binary file not shown.
2
test.py
2
test.py
@@ -1,5 +1,5 @@
|
|||||||
from tri_fusion import entree_tri_fusion_multi
|
from tri_fusion import entree_tri_fusion_multi
|
||||||
|
|
||||||
tab = [[5, 2, 9, 1, 5, 6], [3, 0, -1, 8, 7], [10, 20, 15, 30]]
|
tab = [[38, 27, 43, 3, 9, 82, 10], [1, 2, 3], [5, 4, 6], [12, 11]]
|
||||||
sorted_tab = entree_tri_fusion_multi(tab)
|
sorted_tab = entree_tri_fusion_multi(tab)
|
||||||
print("Tableau trié :", sorted_tab)
|
print("Tableau trié :", sorted_tab)
|
@@ -1,5 +1,6 @@
|
|||||||
def entree_tri_fusion_multi(tab):
|
def entree_tri_fusion_multi(tab):
|
||||||
return [tri_fusion(sub_tab) for sub_tab in tab] # Appliquer le tri fusion à chaque sous-tableau
|
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
|
||||||
|
|
||||||
def tri_fusion(tab):
|
def tri_fusion(tab):
|
||||||
if len(tab) <= 2:
|
if len(tab) <= 2:
|
||||||
@@ -23,4 +24,5 @@ def fusion(left, right):
|
|||||||
j += 1
|
j += 1
|
||||||
result.extend(left[i:]) # Ajouter les éléments restants de gauche
|
result.extend(left[i:]) # Ajouter les éléments restants de gauche
|
||||||
result.extend(right[j:]) # Ajouter les éléments restants de droite
|
result.extend(right[j:]) # Ajouter les éléments restants de droite
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user