Tri a bulle

Résolu
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. 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...