Adloun

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

Le cours du chapitre · Tous les exercices du chapitre