Adloun

Tri par sélection en place

Exercice · OCaml (option informatique), chapitre 9 — Algorithmique : les tris

Énoncé

Écrire tri_selection sur un tableau, et énoncer son invariant.

Corrigé

let tri_selection t =
  let n = Array.length t in
  for i = 0 to n - 2 do
    let imin = ref i in
    for j = i + 1 to n - 1 do
      if t.(j) < t.(!imin) then imin := j
    done;
    let tmp = t.(i) in
    t.(i) <- t.(!imin);
    t.(!imin) <- tmp
  done

Invariant (boucle externe) : au début de l'étape i, les cases 0..i-1 contiennent, triés, les i plus petits éléments du tableau. À la fin (i = n-1), tout est trié. Le tri est en place : aucune allocation, on échange des cases.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.