(* ===================================================== *)
(* Apprentissage de la programmation avec OCaml *)
(* Catherine Dubois & Valérie Ménissier-Morain *)
(* Éditions Hermès Sciences *)
(* Mars 2004 *)
(* ===================================================== *)
(* Fichier MLSRC/Tris_listes/fusion_liste.ml *)
(* ===================================================== *)
let rec diviser_liste l = match l with
| [] -> ([], [])
| [x] -> ([x], [])
| x1::x2::l' ->
let (l1, l2) = diviser_liste l' in (x1::l1, x2::l2);;
let rec fusion l1 l2 = match (l1, l2) with
| ([], []) -> []
| ([], _) -> l2
| (_, []) -> l1
| (x1::l'1, x2::l'2) ->
if x1 < x2
then x1::(fusion l'1 (x2::l'2))
else x2::(fusion (x1::l'1) l'2);;
let rec tri_fusion l = match l with
| [] -> []
| [x] -> [x]
| _ -> let (l1, l2) = diviser_liste l in
fusion (tri_fusion l1) (tri_fusion l2);;
Ce document a été traduit de LATEX par
HEVEA.