Fonction de tri un peu complexe (python)
Résolu/Fermé
MEZIANE002
-
Modifié le 22 mai 2022 à 11:49
yg_be Messages postés 23486 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mars 2025 - 22 mai 2022 à 19:56
yg_be Messages postés 23486 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mars 2025 - 22 mai 2022 à 19:56
A voir également:
- Fonction de tri un peu complexe (python)
- Fonction si et - Guide
- Faire un tri sur excel - Guide
- Citizen code python avis - Accueil - Outils
- Logiciel tri photo gratuit - Guide
- Fonction moyenne excel - Guide
2 réponses
yg_be
Messages postés
23486
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mars 2025
Ambassadeur
1 570
22 mai 2022 à 12:45
22 mai 2022 à 12:45
bonjour,
Comme tu le constates, ta fonction de tri ne trie pas.
Tu as inventé un nouvel algorithme de tri, qui, s'il fonctionnait, serait révolutionnaire, car il serait très rapide.
Comme tu le constates, ta fonction de tri ne trie pas.
Tu as inventé un nouvel algorithme de tri, qui, s'il fonctionnait, serait révolutionnaire, car il serait très rapide.
jee pee
Messages postés
40933
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
15 mars 2025
9 562
Modifié le 22 mai 2022 à 13:33
Modifié le 22 mai 2022 à 13:33
Bonjour,
Comme le fait remarquer yg_be ton tri n'en est pas un, il faut toujours rajouter des prints pour voir ce qui se passe :
une fois que m atteint un max les suivants ne sont pas traités. Tu devrais faire des recherches sur un tri manuel en python,voir par exemple : https://defeo.lu/M1-AlgoProg/tds/tris . Tu pourrais aussi dans get_ordre récupérer la valeur de l'opérateur ce serait plus simple après pour le tri.
Comme le fait remarquer yg_be ton tri n'en est pas un, il faut toujours rajouter des prints pour voir ce qui se passe :
def ordre(l): global op m=1 t=l for i in l: print(i) if op[i[0]] >= m: print(op[i[0]],m) t.remove(i) t.insert(0, i) m = op[i[0]] return t
une fois que m atteint un max les suivants ne sont pas traités. Tu devrais faire des recherches sur un tri manuel en python,voir par exemple : https://defeo.lu/M1-AlgoProg/tds/tris . Tu pourrais aussi dans get_ordre récupérer la valeur de l'opérateur ce serait plus simple après pour le tri.
22 mai 2022 à 13:01
Modifié le 22 mai 2022 à 13:32
22 mai 2022 à 16:30
Mais la tienne est 10x plus courte que la mienne donc merci et gg.
Modifié le 22 mai 2022 à 17:23
- tu appelles get_max() beaucoup trop souvent, tu dois l'appeler hors de la boucle .
- get_max() te retourne le maximum, alors que tu as besoin de l'index du maximum
optimisé:
22 mai 2022 à 17:26