Adloun

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

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →