Prepa Help
Prepa Help › Cours › Informatique, 2e année

Tri par fusion et tri rapide : cours et exercices corrigés de prépa

Diviser pour régner, fusion de deux listes triées, tri par fusion, partition et tri rapide, choix du pivot, complexités temporelle et spatiale au meilleur et au pire cas, stabilité, tri en place, tri selon une clé.

Les nombres sont ceux du chapitre complet ; chaque filière voit la partie qui correspond à son programme.

Le tri par fusion et le tri rapide sont les deux tris efficaces du programme de deuxième année en MP, PSI et TSI au Maroc. Tous deux reposent sur l'idée diviser pour régner : le tri par fusion coupe la liste en deux, trie chaque moitié, puis fusionne les deux moitiés triées ; le tri rapide range les éléments autour d'un pivot par une partition, puis trie chaque côté. Le tri par fusion est en O(nlog⁡n)O(n \log n) dans tous les cas et stable, mais il n'est pas en place ; le tri rapide est en place, en O(nlog⁡n)O(n \log n) au meilleur cas et en O(n2)O(n^2) au pire cas, selon le choix du pivot. Les sujets du CNC demandent souvent d'écrire un tri selon une clé, sans sort ni sorted, parfois avec une complexité imposée. Tu y trouves la fusion par indices, les deux tris en Python avec leurs preuves, leur complexité en temps et en mémoire, la stabilité et le tri en place, puis des exercices corrigés tirés des sujets du CNC.

Ce que tu sauras faire

Trier une liste est l'opération la plus fréquente d'un programme qui traite des données : on trie pour chercher vite, pour repérer des doublons, pour classer des résultats. Les tris de première année coûtent de l'ordre de n2n^2 comparaisons dans le pire cas ; ce chapitre étudie deux tris en O(nlog⁡n)O(n \log n), bâtis sur l'idée « diviser pour régner ». À la fin de ce chapitre, tu dois savoir :

L'essentiel : Diviser pour régner Extrait gratuit

Un extrait de la fiche « L'essentiel » du chapitre. Les démonstrations sont dans le cours détaillé.

À retenir Définitions
  • Diviser pour régner : diviser le problème en sous-problèmes plus petits, les résoudre par des appels récursifs, combiner leurs solutions.
  • Tri en place : la liste reçue est réorganisée avec une mémoire supplémentaire indépendante de nn, pile d'appels mise à part.
  • Tri stable : deux éléments de même clé gardent leur ordre de départ.

Le tri par fusion travaille en combinant (la fusion) ; le tri rapide travaille en divisant (la partition).

Une méthode du chapitre Extrait gratuit

Un exercice corrigé Extrait gratuit

Dans le chapitre complet

Le cours détaillé, toute la fiche « L'essentiel », 15 méthodes, 18 pièges corrigés, la carte mentale, 32 exercices corrigés, 3 problèmes de concours, les fiches à mémoriser et l'assistant qui répond à tes questions. Ce chapitre est offert : il s’ouvre en entier avec un compte d’essai gratuit.

Ouvrir l'essai gratuit

Plan du cours

Les méthodes du chapitre

Chaque méthode est une fiche : quand l'utiliser, le rappel de cours, les étapes, la rédaction attendue sur la copie, un exemple traité, les erreurs à éviter.

  1. Écrire la fusion de deux listes triées
  2. Écrire un tri par fusion récursif
  3. Dérouler un tri par fusion à la main
  4. Écrire une partition en place et dérouler ses échanges
  5. Écrire un tri rapide en place à partir d'une partition
  6. Écrire un tri rapide à listes auxiliaires sans perdre de doublon
  7. Prouver la terminaison et la correction d'un tri récursif
  8. Calculer la complexité en temps d'un tri récursif, au meilleur et au pire cas
  9. Trouver une entrée de meilleur cas et une entrée de pire cas
  10. Calculer la complexité en mémoire d'un tri
  11. Discuter le choix du pivot
  12. Décider si un tri est stable, et le rendre stable
  13. Décider si un tri est en place, et respecter la liste reçue
  14. Trier selon une clé sans sort ni sorted
  15. Choisir et justifier un tri, puis vérifier par la mesure

Les exercices corrigés

Chaque exercice a ses indications, sa correction rédigée et ce qu'il faut en retenir.

Application directe (13)

Entraînement (14)

Approfondissement (5)

Les problèmes de concours

Des extraits de sujets réels, corrigés en entier, avec la durée conseillée et les méthodes mobilisées.

Questions fréquentes

Comment fonctionne le tri par fusion ?

On coupe la liste en deux moitiés, on trie chaque moitié par un appel récursif, puis on fusionne les deux moitiés triées : on compare les deux premiers éléments restants, on ajoute le plus petit au résultat et on avance dans sa liste. Le cas de base est une liste d'au plus un élément, déjà triée. On écrit la fusion avec deux indices et append, jamais avec pop(0) ni des tranches récursives, qui la rendraient quadratique.

Quelle est la complexité du tri par fusion ?

Elle vérifie C(n)=2C(n/2)+anC(n) = 2C(n/2) + an : deux appels sur des moitiés, puis une fusion en temps linéaire. On obtient O(nlog⁡n)O(n \log n) au meilleur comme au pire cas ; pour n=2kn = 2^k, le nombre de comparaisons est compris entre n2log⁡2n\frac{n}{2}\log_2 n et nlog⁡2n−n+1n \log_2 n - n + 1. En mémoire, il demande O(n)O(n) pour les listes créées : ce n'est pas un tri en place.

Comment fonctionne le tri rapide ?

On choisit un élément, le pivot, puis on partitionne la liste : les éléments plus petits que le pivot passent à sa gauche, les autres à sa droite, et le pivot se trouve à sa place définitive. On trie ensuite récursivement les deux côtés, sans le pivot. La version en place du cours travaille sur un segment L[g..d] et s'arrête quand g < d est faux.

Pourquoi le tri rapide est-il en O(n2)O(n^2) dans le pire cas ?

Si le pivot est chaque fois le plus petit ou le plus grand élément de son segment, la partition laisse un côté vide et l'autre de n−1n - 1 éléments : on obtient C(n)=C(n−1)+anC(n) = C(n - 1) + an, soit n(n−1)2\frac{n(n-1)}{2} comparaisons. C'est le cas d'une liste déjà triée avec le pivot premier, et aussi d'une liste de valeurs toutes égales avec la partition du cours. Au meilleur cas, le pivot partage chaque segment en deux moitiés : O(nlog⁡n)O(n \log n).

Comment choisir le pivot du tri rapide ?

Le pivot premier ou dernier est quadratique sur une liste triée. Le pivot du milieu est très bon sur une liste triée, mais une entrée construite exprès le rend quadratique. Un pivot tiré au hasard rend le pire cas très improbable pour toute entrée. Quand beaucoup de valeurs se répètent, on partitionne en trois zones (plus petits, égaux, plus grands) pour éviter le cas quadratique.

Le tri par fusion et le tri rapide sont-ils stables et en place ?

Un tri est stable si deux éléments de même clé gardent leur ordre de départ, et en place s'il n'utilise qu'une mémoire indépendante de nn en plus de la liste. Le tri par fusion, avec une fusion qui compare par <=, est stable mais pas en place. Le tri rapide du cours est en place, mais pas stable ; sa pile d'appels a une profondeur de log⁡2n\log_2 n au mieux et nn au pire.

Comment y accéder

Ce chapitre fait partie des chapitres offerts : il s'ouvre en entier avec un compte d'essai gratuit. Créer un compte d'essai ou se connecter. Pour l'accès complet, les tarifs ou une question, écris-nous sur WhatsApp.

Toute ta prépa au même endroit

Pour chaque chapitre : le cours, l'essentiel, les méthodes, les pièges, les exercices corrigés, les problèmes de concours, et un assistant qui répond à tes questions. Programmes du Maroc et de France.

Essayer gratuitement Prepa Help

← Complexité des algorithmes itératifs et récursifs · Arbres binaires, arbres binaires de recherche et tas →