informatique (tronc commun des prépas scientifiques) · Chapitre 2 · Application directe du cours
Recherche de la dernière occurrence
Recherche séquentielle et dictionnaires · niveau 1 (application)
É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.
Exercices semblables
- Le second maximum et son compte de comparaisons corrigé
- Les anagrammes, ou la clé canonique corrigé
- Le pire cas n'est pas la moyenne corrigé
- Lire des coûts corrigé
- Premiers pas de dictionnaire corrigé