Code source du tri "bulle"
let tri_bulle tableau=
let longueur=Array.length(tableau) and inversion=ref(true) in
while(!inversion) do
inversion:=false;
for i=0 to (longueur-2) do
if (tableau.(i)>tableau.(i+1)) then
begin
echanger tableau i (i+1);
inversion:=true;
end;
done;
done;;
(* val tri_bulle : 'a array -> unit = <fun> *)
let tri_bulle_optimise tableau=
let longueur=ref(Array.length(tableau)) and inversion=ref(true) in
while(!inversion) do
inversion:=false;
for i=0 to (!longueur-2) do
if (tableau.(i)>tableau.(i+1)) then
begin
echanger tableau i (i+1);
inversion:=true;
end;
done;
longueur:=(!longueur)-1;
done;;
(* val tri_bulle_optimise : 'a array -> unit = <fun> *)