OCaml (option informatique) · Chapitre 10 · Exercice de TD
Point d'insertion
Recherche et dichotomie · niveau 2
Énoncé
Écrire insertion x t : l'indice où insérer x dans le tableau trié t pour le garder trié (le nombre d'éléments < x).
Corrigé
let insertion x t =
let g = ref 0 and d = ref (Array.length t) in (* d exclusif *)
while !g < !d do
let m = (!g + !d) / 2 in
if t.(m) < x then g := m + 1 else d := m
done;
!g
On cherche par dichotomie la frontière entre les < x et les >= x. g converge vers le nombre d'éléments strictement inférieurs à x : c'est exactement la position d'insertion. (Borne d prise exclusive ici, d'où Array.length t.)
Exercices semblables
- Dichotomie récursive corrigé
- Logarithme contre linéaire corrigé
- Première occurrence corrigé
- Racine carrée entière par dichotomie corrigé
- Recherche d'un seuil monotone corrigé