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
- Construire un tas en corrigé
- File de priorité de couples corrigé
- Dijkstra avec file de priorité corrigé
- Naviguer dans le tableau corrigé
- API de base corrigé