OCaml (option informatique) · Chapitre 9 · Exercice de TD
Tri fusion
Algorithmique : les tris · niveau 2
Énoncé
Écrire coupe et tri_fusion, et justifier le coût .
Corrigé
let rec coupe l =
match l with
| [] -> ([], [])
| [x] -> ([x], [])
| x :: y :: reste ->
let (a, b) = coupe reste in
(x :: a, y :: b)
let rec tri_fusion l =
match l with
| [] | [_] -> l
| _ ->
let (a, b) = coupe l in
fusion (tri_fusion a) (tri_fusion b)
À chaque niveau de récursion, le travail total (couper + fusionner) est ; il y a niveaux car la taille est divisée par deux. Le coût est donc , et ce dans tous les cas (contrairement au tri rapide).
Exercices semblables
- Tri par insertion complet corrigé
- Tri rapide corrigé
- Tri par sélection en place corrigé
- Valider un tri corrigé
- Le tri par dénombrement corrigé