Tri a bulle

Résolu
AngiePintat Messages postés 2 Statut Membre -  
 lili -
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

  1. AngiePintat Messages postés 2 Statut Membre
     
    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
  2. lili
     
    ptdrr toi aussi t'es à la prépa des inps et t'est en galère ?
    0