Advertisement
Pouknouki

Tas vecteur

Oct 12th, 2016
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 1.18 KB | None | 0 0
  1. type Tas = {tab : int vect ; mutable taille : int };;
  2.  
  3. (* Tas d'exemple. *)
  4.  
  5. let monTas =    {
  6.                                 tab = make_vect 255 0;
  7.                                 taille = 9
  8.                             };;
  9.  
  10.                             monTas.tab.(0) <- 9;
  11.                             monTas.tab.(1) <- 8;
  12.                             monTas.tab.(2) <- 7;
  13.                             monTas.tab.(3) <- 6;
  14.                             monTas.tab.(4) <- 1;
  15.                             monTas.tab.(5) <- 5;
  16.                             monTas.tab.(6) <- 3;
  17.                             monTas.tab.(7) <- 2;
  18.                             monTas.tab.(8) <- 4;;
  19.  
  20.  
  21. (* Fin du tas d'exemple. *)
  22.  
  23. let rec max_noeud tas i =
  24.     if 2 * i + 1 > tas.taille - 1 then
  25.         i;
  26.     else (
  27.         if 2 * 1 + 2 > tas.taille then
  28.             max tas.tab.(i) tas.tab.(2 * i + 1)
  29.         else
  30.             max (tas.tab.(i))
  31.                 (max (max_noeud tas(2 * i + 1)) (max_noeud tas (2 * i + 2)))
  32.     );;
  33.  
  34. let max_noeud tas i =
  35.     if 2 * i + 1 > tas.taille - 1 then
  36.         i
  37.     else (
  38.         if tas.tab.(i) <= 2 * tas.tab.(2 * i + 1) then
  39.             2 * i + 1
  40.         else (
  41.             if tas.tab.(i) < tas.tab.(2 * i + 1) || tas.tab.(i) < tas.tab.(2 * i + 2) then (
  42.                 if tas.tab.(2 * i + 1) > tas.tab.(2 * i + 2) then (
  43.                     2 * i + 2
  44.                 )
  45.                 else
  46.                 (
  47.                     2 * i + 2
  48.                 )
  49.             )
  50.             else
  51.             (
  52.                 2 * i + 1
  53.             )
  54.         )
  55.     );;
  56.  
  57. let m = max_noeud monTas 3;;
  58.  
  59. /*let entasser tas i =
  60.     if tas.tab.(i)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement