Adloun

OCaml (option informatique) · Chapitre 19 · Application directe du cours

Insérer

Files de priorité : le tas binaire · niveau 1 (application)

Énoncé

Écrire insere et dérouler l'insertion de 0 dans le tas [| 1; 3; 2 |].

Corrigé

let insere t x =
  let d = t.donnees in
  d.(t.taille) <- x;
  t.taille <- t.taille + 1;
  let i = ref (t.taille - 1) in
  while !i > 0 && d.((!i - 1) / 2) > d.(!i) do
    let p = (!i - 1) / 2 in
    let tmp = d.(!i) in d.(!i) <- d.(p); d.(p) <- tmp;
    i := p
  done

On place 0 en indice 3 : [|1;3;2;0|]. Son parent (indice 1) est 3 > 0 : on échange → [|1;0;2;3|]. Le nouveau parent (indice 0) est 1 > 0 : on échange → [|0;1;2;3|]. 0 est remonté à la racine : c'est le nouveau minimum.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre