Table des matières
Recherche d'un extremum dans une liste de nombres
Exercice 3 du TP 1
On se place dans le cas d'une séquence – list, tuple, str – non vide d'objets que l'on peut comparer.
En Python, on peut bien sur comparer des nombres. On peut également comparer du texte, la comparaison se faisant suivant l'ordre alphabétique. Ainsi "chat" < "lama" est True.
Question 1
On souhaite déterminer l'élément maximum des éléments de la séquence. On peut procéder par recherche séquentielle :
FONCTION maximum
ENTRÉE: séquence non vide d'objets comparables
SORTIE: élément maximum
DÉBUT
maximum trouvé jusqu'ici est le premier élément de la séquence
POUR CHAQUE item de la séquence à partir du rang 1 FAIRE
SI cet item est plus grand que le maximum trouvé ALORS
le maximum trouvé devient égal à cet élément
FIN
FIN
renvoyer le maximum trouvé
FIN
- Implémenter cette fonction.
- Écrire une variante qui renvoie, en plus du maximum, la séquence des indices où ce maximum est atteint
Question 2
On cherche maintenant le deuxième maximum, c’est-à-dire, ici, la valeur maximale, une fois que l’on a éliminé les éléments égaux à la valeur maximale entendue comme ci-dessus.
Précondition : La séquence contient au moins deux valeurs distinctes.
Écrire une première fonction deux_maximum qui, pour une séquence L, retourne le couple (max1, max2) tel que :
max1 != max2max1 in Letmax2 in L- pour tout
e in L,e ⇐ max1et sie != max1alorse ⇐ max2
Question 3
Écrire – si distincte de la première – une deuxième version deux_maximum2 qui respecte l'algorithme suivant.
FONCTION deux_maximum2
ENTRÉE: séquence L d'éléments comparables
comptant au moins deux éléments distincts
SORTIE: paire (max1, max2), max1 étant le premier maximum et max2 le second
DÉBUT
initialiser max1 et max2 à L[0], L[1],
max1 devant être le plus grand des deux et max2 le plus petit
POUR CHAQUE item de la liste à partir du rang 2 FAIRE
modifier max1 et max2 selon la valeur de item
FIN
renvoyer max1, max2
Question 4
Donnez la complexité des fonctions obtenues en questions 2 et 3 – une seule si vous avez fait deux fois la même chose.
