Adloun

Recherche de la dernière occurrence

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 2 — Recherche séquentielle et dictionnaires

Énoncé

Écrire une fonction derniere_occurrence(v, t) qui renvoie le plus grand indice tel que t[i] == v (ou None), en un seul parcours. Fournir son invariant et sa complexité.

Corrigé

def derniere_occurrence(v, t: list):
    pos = None
    for i in range(len(t)):
        # Invariant : pos est le plus grand indice j < i tel que t[j] == v,
        #             ou None si v n'apparaît pas dans t[0..i-1]
        if t[i] == v:
            pos = i
        # Fin de l'invariant pour l'étape i
    return pos

La complexité dans le cas le pire est puisqu'on parcourt toujours l'intégralité du tableau. On ne peut pas interrompre la boucle prématurément (contrairement à la première occurrence) car une autre occurrence de peut toujours se situer plus loin.

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.