Code source du tri "bulle"
let rec tri_bulle liste=
let rec parcours liste=
match liste with
|[]->(false,liste)
|t::[]->(false,liste)
|t::q->let (echange,resultat)=parcours q in
if (hd resultat)>=t then
echange,t::resultat
else
true,(hd resultat)::t::(tl resultat) in
match liste with
|[]->liste;
|_->let (modifie,liste2)=parcours liste in
if modifie then tri_bulle liste2 else liste;;
(* tri_bulle : 'a list -> 'a list = <fun> *)
let rec tri_bulle_optimise liste=
let rec parcours liste=
match liste with
|[]->(false,liste)
|t::[]->(false,liste)
|t::q->let (echange,resultat)=parcours q in
if (hd resultat)>=t then
echange,t::resultat
else
true,(hd resultat)::t::(tl resultat) in
match liste with
|[]->liste;
|_->let (modifie,liste2)=parcours liste in
if modifie then (hd liste2)::(tri_bulle (tl liste2)) else liste;;
(* tri_bulle_optimise : 'a list -> 'a list = <fun> *)