Dérouler à la main tri selection sur [5, 2, 8, 1] , en écrivant l'état…
Application directe du cours · niveau 1 (application) · NSI (première), chapitre 7 — Parcourir, trier, prouver · Dérouler, compter, vérifier
Énoncé
Dérouler à la main tri_selection sur [5, 2, 8, 1], en écrivant l'état du tableau après chaque tour, et vérifier l'invariant à chaque étape.
Corrigé
| minimum de `t[i..3]` | échange | état après | |
|---|---|---|---|
| --- | --- | --- | `[5, 2, 8, 1]` |
| , en position | `t[0]` `t[3]` | `[1, 2, 8, 5]` | |
| , en position | `t[1]` `t[1]` | `[1, 2, 8, 5]` | |
| , en position | `t[2]` `t[3]` | `[1, 2, 5, 8]` |
L'invariant, ligne à ligne — avant le tour , t[0..i-1] est trié et contient les plus petits éléments :
- avant : partie vide, vrai par vacuité ;
- avant :
[1]— trié, et est bien le plus petit des quatre ; - avant :
[1, 2]— trié, et ce sont bien les deux plus petits ; - avant , c'est-à-dire à la sortie :
[1, 2, 5]— trié, et ce sont les trois plus petits. Le restant est donc le plus grand, et il est déjà à sa place.
Deux observations. Au tour , l'échange se fait de la case avec elle-même : c'est un travail nul, et le tri par sélection en fait souvent. Et à la fin, la boucle s'arrête à , pas : la dernière case est juste par conséquence de l'invariant, non parce qu'on s'en est occupé. C'est le sujet de l'exercice suivant.
Le décompte : comparaisons — soit — et échanges.
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.