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 (List.hd resultat)>=t then
echange,t::resultat
else
true,(List.hd resultat)::t::(List.tl resultat) in
match liste with
|[]->liste;
|_->let (modifie,liste2)=parcours liste in
if modifie then tri_bulle liste2 else liste;;
(* val 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 (List.hd resultat)>=t then
echange,t::resultat
else
true,(List.hd resultat)::t::(List.tl resultat) in
match liste with
|[]->liste;
|_->let (modifie,liste2)=parcours liste in
if modifie then (List.hd liste2)::(tri_bulle (List.tl liste2)) else liste;;
(* val tri_bulle_optimise : 'a list -> 'a list = <fun> *)