Adloun

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

Le cours du chapitre · Tous les exercices du chapitre