Adloun

Tri fusion

Exercice · OCaml (option informatique), chapitre 9 — Algorithmique : les tris

É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).

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.