====== 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 != max2''
* ''max1 in L'' et ''max2 in L''
* pour tout ''e in L'', ''e <= max1'' et si ''e != max1'' alors ''e <= 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.