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> *)