Dominique <z...@aol.com.invalid> writes:
> Le 29/04/2021 à 22:38, Benoit Izac a écrit :
>
>> La valeur maximale d'une liste c'est la plus grande valeur entre le
>> premier élément et la valeur maximale des éléments suivants.
>
> Bonjour,
>
> Je comprends mal quelle peut-être cette plus grande valeur que tu évoques.
>
> Si liste=[4,7,5,5,2,6,9,3,8,4], je serais tenté d'isoler liste[0] avec
> deb=liste[0], le retirer de liste, puis de faire
> liste.sort(revere=)True) et prendre liste[0] et faire deb+liste[0]
>
> Mais c'est si simple que ça ne doit pas être ça
Ce n'est pas un problème de simplicité, c'est un problème de complexité
(au passage, il est inutile d'enlever le premier élément, tu peux trier
et prendre le premier/dernier selon que tu veux le min/max -- ou
l'inverse avec reverse ; en fait je ne comprends pas ton idée avec le
premier élément).
Le problème de complexité est : trier une liste de n élements coûte
environ n*log(n) comparaisons, alors que trouver le min/max ne devrait
coûter que environ n opérations (comparer un nouvel élément avec le
min/max déjà connu des éléments déjà consultés).
Ce qu'explique Benoît, c'est comment déterminer le min/max sans utiliser
une opération qui coûte plus cher que cette recherche, en utilisant
uniquement les opérations de base sur les listes. C'est un algorithme,
qui doit être récursif (pour ce qu'on comprend de la question initiale).
(En Python, il y a aussi les fonctions min()/max(), mais manifestement
ici il faut l'écrire soi-même.)
Enfin, je ne vois pas pourquoi trouver le min/max d'une liste devrait
détruire la liste à grands coups de del...
-- Alain.