Numérique et sciences informatiques (spécialité) · TerminaleBac
Diviser pour régner et tri fusion : exercices corrigés de Terminale
Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur
L'essentiel
- Un algorithme diviser pour régner suit trois phases : diviser le problème, régner sur les sous-problèmes, combiner les résultats 12.
- Le tri fusion coupe le tableau en deux moitiés, trie chaque moitié par le même procédé, puis fusionne les deux moitiés triées.
- La fusion de deux listes triées avance deux indices : on compare les têtes de liste et on recopie la plus petite.
- Pour une taille , il y a niveaux de découpage, et chaque niveau traite au total éléments.
- La relation se résout par dépliage ; elle donne opérations pour les puissances de 2.
Comment utiliser ces exercices
Ces exercices te font manipuler la méthode diviser pour régner, puis son exemple le plus classique au programme : le tri fusion. Ils vont du plus simple (reconnaître les phases, fusionner à la main) au plus exigeant (compter des opérations, résoudre une relation de récurrence). Cherche chaque exercice sur papier avant d'ouvrir les indices, puis compare avec la correction étape par étape.
Un intérêt majeur de cette famille d'algorithmes est leur faible complexité 2. Les exercices 6 et 7 te font voir d'où elle vient en comptant toi-même les opérations. Pour les cas plus délicats que ceux de ce chapitre, il existe des théorèmes qui facilitent le calcul de la complexité, dont le principal est connu sous le nom de Master theorem 2 ; ici, tu t'en passeras en dépliant la récurrence à la main.
Les exercices
Exercice 1 Reconnaître les trois phases
On trie le tableau [5, 2, 9, 1] avec le tri fusion.
- Écris les deux moitiés obtenues à la première phase de division.
- Pour chacune des trois phases (diviser, régner, combiner), indique à quel moment elle intervient dans cet exemple.
- Donne le résultat final.
Indice 1
Coupe le tableau au milieu : la taille 4 donne deux moitiés de taille 2.
Indice 2
Les moitiés de taille 2 sont elles-mêmes coupées, jusqu'à des tableaux d'un seul élément.
Voir la correction pas à pas
Diviser :
[5, 2, 9, 1]donne[5, 2]et[9, 1].Les moitiés sont à leur tour divisées :
[5],[2],[9],[1]. Ces tableaux d'un seul élément sont triés, c'est le cas de base.Régner : on trie chaque moitié en appelant le tri fusion sur elle, ce qui revient ici à descendre jusqu'aux tableaux d'un élément.
Combiner : on fusionne
[5]et[2]en[2, 5], puis[9]et[1]en[1, 9].Dernière combinaison : on fusionne
[2, 5]et[1, 9]en[1, 2, 5, 9].
Les trois phases se retrouvent à chaque niveau de la récursion : on divise en descendant, on combine en remontant 2. Le résultat est [1, 2, 5, 9].
Exercice 2 Fusionner deux listes triées
On fusionne les listes triées A = [1, 4, 7] et B = [2, 3, 9] en comparant à chaque étape les deux plus petits éléments restants.
- Écris la liste fusionnée.
- Combien de comparaisons d'éléments ont été faites avant que l'une des listes soit épuisée ?
Indice 1
Garde un indice sur chaque liste. À chaque comparaison, tu recopies le plus petit et tu avances l'indice de sa liste.
Indice 2
Une fois qu'une liste est épuisée, on ne compare plus rien : on recopie le reste de l'autre.
Voir la correction pas à pas
Compare 1 et 2 : on prend 1. Résultat :
[1]. Comparaison n°1.Compare 4 et 2 : on prend 2. Résultat :
[1, 2]. Comparaison n°2.Compare 4 et 3 : on prend 3. Résultat :
[1, 2, 3]. Comparaison n°3.Compare 4 et 9 : on prend 4. Comparaison n°4. Compare 7 et 9 : on prend 7. Comparaison n°5. Résultat :
[1, 2, 3, 4, 7].La liste
Aest épuisée. On recopie le reste deB, c'est-à-dire 9, sans comparaison. Résultat :[1, 2, 3, 4, 7, 9].On compte 5 comparaisons, soit .
La liste fusionnée est [1, 2, 3, 4, 7, 9], obtenue avec 5 comparaisons. Retiens que fusionner deux listes de tailles et demande au plus comparaisons : chaque comparaison place un élément, et le dernier est placé sans comparaison.
Exercice 3 Compter les niveaux de découpage
On trie un tableau de 16 éléments avec le tri fusion, en coupant toujours en deux moitiés égales jusqu'à obtenir des tableaux d'un seul élément.
- Écris la taille des tableaux à chaque niveau de découpage.
- Combien de fois faut-il diviser par 2 pour passer de 16 à 1 ?
- Exprime ce nombre avec un logarithme.
Indice 1
Pars de 16 et divise par 2 jusqu'à tomber sur 1.
Indice 2
Si , alors est le logarithme de base 2 de 16.
Voir la correction pas à pas
Les tailles successives sont 16, 8, 4, 2, 1.
Entre 16 et 1, il y a quatre divisions par 2 : .
On a donc , ce qui s'écrit .
Il y a 4 niveaux de découpage pour 16 éléments.
Pour éléments, il y a niveaux de découpage. C'est ce petit nombre de niveaux qui rend la méthode efficace : la profondeur de la récursion croît très lentement avec .
Exercice 4 Dérouler complètement un tri fusion
On applique le tri fusion à [38, 27, 43, 3, 9, 82, 10], qui compte 7 éléments. Quand la taille est impaire, la moitié de gauche reçoit un élément de moins que celle de droite.
- Donne les deux moitiés de la première division, puis toutes les divisions suivantes.
- Écris chaque fusion dans l'ordre où elle s'effectue.
- Combien de fusions ont été faites en tout ?
Indice 1
Taille 7 : la moitié de gauche a 3 éléments, celle de droite en a 4.
Indice 2
Dans la moitié de gauche [38, 27, 43], on coupe en [38] et [27, 43].
Voir la correction pas à pas
Première division :
[38, 27, 43]et[3, 9, 82, 10].Côté gauche :
[38, 27, 43]donne[38]et[27, 43]; puis[27, 43]donne[27]et[43].Côté droit :
[3, 9, 82, 10]donne[3, 9]et[82, 10]; puis[3, 9]donne[3]et[9], et[82, 10]donne[82]et[10].Fusions à gauche :
[27]et[43]donnent[27, 43]; puis[38]et[27, 43]donnent[27, 38, 43].Fusions à droite :
[3]et[9]donnent[3, 9];[82]et[10]donnent[10, 82]; puis[3, 9]et[10, 82]donnent[3, 9, 10, 82].Fusion finale :
[27, 38, 43]et[3, 9, 10, 82]donnent[3, 9, 10, 27, 38, 43, 82].On compte 2 fusions à gauche, 3 à droite et 1 finale : 6 fusions en tout.
Le tableau trié est [3, 9, 10, 27, 38, 43, 82]. Chaque fusion réduit d'une unité le nombre de blocs triés : on part de 7 blocs d'un élément et on termine avec 1 seul bloc, donc fusions. Ce raisonnement donne fusions pour éléments, quelle que soit la façon de couper.
Exercice 5 Compléter la fonction de fusion en Python
Voici une fonction qui fusionne deux listes triées g et d. Trois endroits sont à compléter (repérés par ???).
def fusion(g, d):
i = 0
j = 0
res = []
while i < len(g) and ???:
if g[i] <= d[j]:
res.append(g[i])
i = i + 1
else:
res.append(???)
j = j + 1
return res + ???
- Complète les trois
???. - Écris ensuite la fonction
tri_fusion(t)qui utilisefusion, en précisant le cas de base. - Pourquoi la condition
g[i] <= d[j]utilise-t-elle<=plutôt que<quand il y a des doublons ?
Indice 1
La boucle doit s'arrêter dès que l'une des deux listes est épuisée : il faut tester que j est encore valide pour d.
Indice 2
Après la boucle, une des deux listes est vide de restes ; l'autre peut contenir des éléments à recopier, sous forme de tranches g[i:] et d[j:].
Indice 3
Pour la division en deux moitiés, utilise milieu = len(t) // 2.
Voir la correction pas à pas
La boucle continue tant que les deux listes ont encore des éléments :
while i < len(g) and j < len(d):.Dans le
else, c'est l'élément dedqui est le plus petit :res.append(d[j]).À la sortie de la boucle, au moins une des deux listes est épuisée. Le reste de l'autre est déjà trié et se recopie à la fin :
return res + g[i:] + d[j:]. Une des deux tranches est vide.Le tri récursif : si
len(t) <= 1, on renvoiet(cas de base). Sinonmilieu = len(t) // 2, puisreturn fusion(tri_fusion(t[:milieu]), tri_fusion(t[milieu:])).Avec
<=, quand deux valeurs sont égales, on prend d'abord celle de la liste de gauche. Les éléments égaux gardent alors leur ordre d'origine : le tri est dit stable. Avec<, le résultat resterait trié, mais l'ordre relatif des égaux pourrait changer.
La fonction complète est :
def fusion(g, d):
i = 0
j = 0
res = []
while i < len(g) and j < len(d):
if g[i] <= d[j]:
res.append(g[i])
i = i + 1
else:
res.append(d[j])
j = j + 1
return res + g[i:] + d[j:]
def tri_fusion(t):
if len(t) <= 1:
return t
milieu = len(t) // 2
return fusion(tri_fusion(t[:milieu]), tri_fusion(t[milieu:]))
On y retrouve les trois phases : la ligne milieu divise, les deux appels récursifs règnent, fusion combine 1.
Exercice 6 Estimer le nombre d'opérations
On trie un tableau de éléments avec le tri fusion, en supposant que tous les découpages sont parfaitement égaux.
- Combien de niveaux de découpage y a-t-il ?
- À chaque niveau, les fusions traitent ensemble les éléments du tableau. Estime le nombre total d'éléments placés par les fusions.
- Un tri « naïf » qui compare chaque élément à tous les autres effectue de l'ordre de opérations. Calcule et compare.
Indice 1
.
Indice 2
Nombre total = (nombre de niveaux) .
Voir la correction pas à pas
Comme , il y a niveaux de découpage.
À chaque niveau, les fusions rangent en tout 1024 éléments : un niveau coûte de l'ordre de placements.
Total estimé : placements.
Pour la méthode naïve : .
Rapport : . La méthode naïve fait de l'ordre de cent fois plus d'opérations.
Le tri fusion effectue de l'ordre de placements, soit ici 10 240. L'écart avec grandit vite quand augmente : c'est cette faible complexité qui fait l'intérêt des algorithmes diviser pour régner 2. Il s'agit d'une estimation de l'ordre de grandeur, pas d'un décompte exact des comparaisons.
Exercice 7 Résoudre une relation de récurrence
Soit le nombre d'éléments placés par un tri fusion sur éléments, avec . On modélise : et, pour , .
- Explique le sens de chacun des deux termes de la relation.
- Calcule , , , et .
- Conjecture une formule pour , puis démontre-la par récurrence sur .
Indice 1
Le terme correspond à la phase « régner », le terme à la phase « combiner ».
Indice 2
Compare chaque valeur trouvée à .
Indice 3
Pour l'hérédité, écris et remplace par l'hypothèse.
Voir la correction pas à pas
Le terme est le coût des deux appels récursifs sur des moitiés de taille (régner). Le terme est le coût de la fusion, qui place éléments (combiner).
.
; .
; .
On observe : , , , , . Conjecture : .
Initialisation : pour , .
Hérédité : on suppose . Alors . La propriété passe au rang .
Conclusion : pour tout entier , , soit .
On obtient . La formule pour puissance de 2 confirme l'estimation de l'exercice précédent. Pour des récurrences de forme plus générale, des théorèmes comme le Master theorem évitent de déplier à la main 2.
Exercice 8 L'algorithme d'Euclide vu comme diviser pour régner
L'algorithme d'Euclide, qui sert à trouver le pgcd de deux entiers, est parfois présenté comme un cas de diviser pour régner : à chaque étape, on remplace le couple de départ par un couple de nombres plus petits 2. On rappelle que où est le reste de la division euclidienne de par , et que .
- Calcule en écrivant chaque division.
- Écris la fonction récursive correspondante en Python.
- Compare avec le tri fusion : combien de sous-problèmes à chaque étape ? Y a-t-il une vraie phase « combiner » ?
Indice 1
Divise 252 par 105 : le reste est 42.
Indice 2
Continue avec le couple (105, 42), puis (42, 21).
Voir la correction pas à pas
, donc .
, donc .
, donc .
Fonction :
def pgcd(a, b):puisif b == 0: return apuisreturn pgcd(b, a % b).Comparaison : à chaque étape il n'y a qu'un seul sous-problème, et non deux comme dans le tri fusion. Il n'y a pas de combinaison : la réponse du sous-problème est renvoyée telle quelle.
. Cet exemple montre que l'idée « se ramener à un problème plus petit » dépasse le tri. Il montre aussi une différence : le tri fusion découpe en deux sous-problèmes qu'il faut ensuite recombiner, alors qu'Euclide se ramène à un seul sous-problème sans combinaison.
Exercice 9 Choisir la bonne méthode et la justifier
On souhaite trouver le plus grand élément d'un tableau de 8 valeurs : [7, 3, 12, 5, 9, 1, 8, 4].
- Décris un algorithme diviser pour régner qui coupe le tableau en deux moitiés, cherche le maximum de chacune, puis combine.
- Applique-le au tableau donné et trace les appels.
- Combien de comparaisons la phase « combiner » effectue-t-elle au total ?
Indice 1
Le cas de base est un tableau d'un seul élément : son maximum est cet élément.
Indice 2
Combiner deux maximums revient à une seule comparaison.
Voir la correction pas à pas
Algorithme : si le tableau a un élément, on le renvoie. Sinon on coupe en deux, on calcule le maximum de chaque moitié par un appel récursif, et on renvoie le plus grand des deux.
Division :
[7, 3, 12, 5]et[9, 1, 8, 4], puis[7, 3],[12, 5],[9, 1],[8, 4].Combinaisons de niveau le plus bas : max(7, 3) = 7 ; max(12, 5) = 12 ; max(9, 1) = 9 ; max(8, 4) = 8. Soit 4 comparaisons.
Niveau suivant : max(7, 12) = 12 ; max(9, 8) = 9. Soit 2 comparaisons.
Dernière combinaison : max(12, 9) = 12. Soit 1 comparaison.
Total : comparaisons, c'est-à-dire .
Le maximum est 12, obtenu avec 7 comparaisons. Une simple boucle qui parcourt le tableau en effectue aussi 7 : ici, diviser pour régner n'apporte aucun gain de coût. Cette méthode n'est donc pas à appliquer partout ; elle devient intéressante quand la combinaison est peu coûteuse par rapport au gain obtenu en réduisant la taille, comme pour le tri.
Les questions qu'on se pose
Pourquoi le tri fusion est-il plus rapide qu'un tri qui compare chaque élément aux autres ?
Parce que le travail est réparti sur peu de niveaux. Pour éléments, il y a niveaux de découpage, et chaque niveau traite au total éléments, ce qui donne de l'ordre de opérations (exercices 6 et 7). Un tri naïf qui compare chaque élément à tous les autres s'approche de . La faible complexité est l'un des principaux intérêts de la méthode 2.
Comment savoir si un problème se prête à diviser pour régner ?
Pose-toi trois questions : peut-on couper le problème en sous-problèmes de même nature, plus petits ? Peut-on résoudre directement les plus petits (cas de base) ? Peut-on assembler facilement leurs solutions ? Si oui aux trois, la méthode convient 12. Si la combinaison coûte autant que de résoudre le problème directement, comme pour la recherche du maximum (exercice 8), le gain disparaît.
Que faut-il écrire au bac pour justifier un tri fusion ?
Identifie clairement les trois phases : où l'on divise, où l'on appelle la fonction sur les moitiés, où l'on fusionne. Donne le cas de base (tableau d'au plus un élément) et précise que la fusion suppose deux listes déjà triées. Si l'on te demande un coût, compte les niveaux de découpage puis ce que traite chaque niveau, comme dans l'exercice 6.
Sources
- Algorithmes diviser pour régner et tri fusion - Ressource Éduscol, Éduscol. Consulté le 7 novembre 2026.
- Diviser pour régner (informatique), Wikipédia. Consulté le 7 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.