Tri a bulle

Résolu/Fermé
AngiePintat Messages postés 2 Date d'inscription lundi 13 décembre 2021 Statut Membre Dernière intervention 13 décembre 2021 - 13 déc. 2021 à 13:01
 lili - 15 déc. 2021 à 14:51
Bonjour,
j'ai besoin d'aide.
Je n'arrive pas à réaliser mon programme python qui consiste à trier une liste grâce à la méthode du tri a bulle avec détection si la liste est déjà triée. Il permet aussi de compter le nombre de permutations et de comparaisons entre deux éléments consécutifs. Il est indiqué que si aucune permutation n'est réalisée il ne faut pas afficher la liste.
Je n'arrive pas à modifier mon programme pour qu'il fonctionne correctement.
Quelqu'un aurait la solution?
(je pense que c'est au niveau du nombre de comparaisons qu'il a un problème.)
Merci!

3 réponses

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
13 déc. 2021 à 14:13
bonjour,
as-tu tenu compte de la ligne 14?
peux-tu partager du texte, et pas des images?
tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
AngiePintat Messages postés 2 Date d'inscription lundi 13 décembre 2021 Statut Membre Dernière intervention 13 décembre 2021
13 déc. 2021 à 19:53
bonsoir,
oui j'ai tenu compte de la ligne 14.
j'ai donc essayé de créer une variable booléenne "triée" initialisée à False qui définirait si la liste est détectée triée ou non. De cette manière:

triee=False
borne=len(liste)
while triee!=False:
for i in range(1,borne-1):
for j in range(0, borne-i):
if liste[j+1] < liste[j]:
triee=False
inf=liste[j+1]
liste[j+1]=liste[j]
liste[j]=inf
nb_permutations+=1
nb_comparaisons+=1
borne-=1
print(liste)
else:
triee=True
nb_comparaisons+=1
borne-=1

mais je n'obtiens toujours pas le bon résultat.
le programme qui me donne le meilleur taux de réussite reste celui-ci:

nb_comparaisons = 0 # nombre de comparaisons sur les éléments de la liste
nb_permutations = 0 # nombre de permutations sur les éléments de la liste

for i in range(1,len(liste)):
for j in range(0, len(liste)-i):
if liste[j+1] < liste[j]:
inf=liste[j+1]
liste[j+1]=liste[j]
liste[j]=inf
nb_permutations+=1
nb_comparaisons+=1
else:
nb_comparaisons+=1
print(liste)

donc je pense qu'il faut que je garde ce squelette...
0
ptdrr toi aussi t'es à la prépa des inps et t'est en galère ?
0