🧮D02🔥 Top Bac🎓 NSI Terminale · Coef. 16
🧮 Algorithmes avancés
Complexité Big-O, tri fusion O(n log n), quicksort O(n log n) moyen, algorithme de Dijkstra (plus court chemin pondéré).
⚡ Complexité et tris
Notation Big-O — complexités essentielles
À retenirO(1) : constant — accès tableau par indice O(log n) : logarith. — dichotomie, ABR équilibré O(n) : linéaire — parcours liste O(n log n) : quasi-lin. — tri fusion, quicksort (moy.) O(n²) : quadr. — tri sélection/insertion COMPARAISON pour n = 1 000 000 : O(1) → 1 opération O(log n) → 20 opérations O(n) → 1 000 000 O(n log n) → 20 000 000 O(n²) → 10¹² (inutilisable !) Règle : préférer O(n log n) à O(n²) dès n > 1000.
Tri fusion (Merge Sort) — O(n log n)
AlgorithmeParadigme : DIVISER POUR RÉGNER
Complexité : O(n log n) garanti (pire ET meilleur cas)
Mémoire : O(n) supplémentaire
Stable : ✓ (préserve l'ordre des éléments égaux)
def tri_fusion(lst):
if len(lst) <= 1:
return lst
m = len(lst) // 2
g = tri_fusion(lst[:m])
d = tri_fusion(lst[m:])
return fusionner(g, d)
def fusionner(g, d):
res = []
i = j = 0
while i < len(g) and j < len(d):
if g[i] <= d[j]:
res.append(g[i]); i += 1
else:
res.append(d[j]); j += 1
return res + g[i:] + d[j:]
print(tri_fusion([38, 27, 43, 3])) # [3, 27, 38, 43]⚡ Tri fusion est STABLE : idéal pour trier par plusieurs critères (ex: trier par nom puis par note — les égalités de note conservent l'ordre alphabétique).
Tri rapide (Quicksort) — O(n log n) moy.
AlgorithmeParadigme : DIVISER POUR RÉGNER
Complexité : O(n log n) moyen, O(n²) pire cas
Mémoire : O(log n) (récursion)
Pas stable mais très efficace en pratique
def quicksort(lst):
if len(lst) <= 1:
return lst
pivot = lst[len(lst) // 2]
gauche = [x for x in lst if x < pivot]
milieu = [x for x in lst if x == pivot]
droite = [x for x in lst if x > pivot]
return quicksort(gauche) + milieu + quicksort(droite)
print(quicksort([3, 6, 8, 10, 1, 2, 1])) # [1, 1, 2, 3, 6, 8, 10]
CHOIX DU PIVOT :
Pivot = milieu : bonne heuristique
Pivot aléatoire : évite le pire cas en pratique
Pire cas : liste déjà triée avec pivot=premierExercices
EX-A1FacileTrace du tri fusion
Tracer le tri fusion de [38, 27, 43, 3, 9, 82]. Montrer les divisions et les fusions.
EX-A2IntermédiaireComparer les complexités
Pour trier n=10 000 éléments, combien d'opérations pour : tri insertion O(n²) vs tri fusion O(n log n) ? Ratio ?