Adloun

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.