Tester si une liste est triée
Exercice · niveau 1 (application) · mathématiques appliquées (ECG 1re année), chapitre 11 — Informatique et algorithmique · Parcours et boucles imbriquées
Énoncé
Écrire est_triee(L) qui teste si L est croissante. Que doit-elle renvoyer sur une liste vide ?
Corrigé
def est_triee(L):
for i in range(len(L) - 1):
if L[i] > L[i+1]:
return False
return True
Sur une liste vide, elle doit renvoyer True — et c'est ce qu'elle fait : range(-1) est vide, aucun tour n'a lieu, on tombe sur return True.
Pourquoi c'est le bon choix. La propriété testée est un « pour tout » : . Un énoncé universel portant sur un ensemble vide d'indices est vrai — il n'existe aucun couple qui puisse le démentir. Ce n'est pas une convention arbitraire : elle évite un cas particulier dans tous les algorithmes qui appellent cette fonction, et elle rend cohérent le fait que toute sous-liste d'une liste triée est triée.
Le sortir de la boucle, aussi : mettre return True à l'intérieur ferait répondre après la première comparaison réussie, sans regarder le reste.
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.