Code source du tri rapide
let partition tableau deb fin=
let pivot=tableau.(deb) and compteur=ref(deb) in
for i=(deb+1) to fin do
if(tableau.(i)<pivot) then
begin
compteur:=(!compteur)+1;
echanger tableau i (!compteur);
end;
done;
echanger tableau (!compteur) deb;
(!compteur);;
(* val partition : 'a array -> int -> int -> int = <fun>*)
let tri_rapide tableau=
let rec tri_rapide_bis tableau deb fin=
if deb<fin then
begin
let position=(partition tableau deb fin) in
tri_rapide_bis tableau deb (position-1);
tri_rapide_bis tableau (position+1) fin;
end;
in
tri_rapide_bis tableau 0 (Array.length(tableau)-1);;
(* val tri_rapide : 'a array -> unit = <fun> *)