NSI (première) · Chapitre 7 · Application directe du cours
Vérifier expérimentalement que tri selection compte renvoie exactement…
Parcourir, trier, prouver · Dérouler, compter, vérifier · niveau 2
Énoncé
Vérifier expérimentalement que tri_selection_compte renvoie exactement pour toutes les tailles de 1 à 100, quel que soit le contenu.
Corrigé
« Quel que soit le contenu » est la partie intéressante : il faut donc varier le contenu, pas seulement la taille.
import random
random.seed(84)
for n in range(1, 101):
attendu = n * (n - 1) // 2
for etat in ("trie", "envers", "alea", "egaux"):
if etat == "trie": t = list(range(n))
elif etat == "envers": t = list(range(n, 0, -1))
elif etat == "alea": t = [random.randint(0, 100) for _ in range(n)]
else: t = [7] * n
assert tri_selection_compte(t) == attendu, (n, etat)
cas passent, aucune assertion ne se déclenche.
Pourquoi le contenu n'y change rien. Les deux boucles sont des for sur des range qui ne dépendent que de . Le contenu décide seulement de la valeur de m, jamais du nombre de tours. Le tri par sélection n'a donc ni meilleur ni pire cas — c'est ce que le cours annonçait, et l'expérience le confirme sur quatre familles de tableaux, dont les deux extrêmes.
Le cas mérite d'être dans le lot : , aucune comparaison. Un tableau d'un élément est déjà trié, et l'algorithme le sait sans rien faire.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.