Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tri d'une list

Anonyme
    9 juillet 2010 à 16:27:50

    Salut alors voila j'essayai de reproduire les différents types de tri en langage python
    J'ai appris uniquement deux type de tri: par sélection et à bulles.
    Mais lorsque j'ai voulu faire celui du à bulles, j'obtiens un tri fonctionnel qui n'a pas la meme forme que le tri a bulles et qui me parait plus optimisé:
    #tri par sélection
    def triSel(ls):
        "tri par sélection sur une list"
        lls =len(ls)
        i =0
        while i <lls:
            j =i +1
            while j <lls:
                if ls[j] <ls[i]: 
                    temp =ls[j]
                    ls[j] =ls[i]
                    ls[i] =temp
                j +=1
            i +=1
        return ls
    
    # tri
    def tri(ls):
        "tri sur une list"
        lls =len(ls)
        i =0
        while i <lls:
            if ls[i] <ls[i -1]:
                temp =ls[i]
                ls[i] =ls[i -1]
                ls[i -1] =temp
                i =0
            i +=1
        return ls
    

    Sauriez-vous me dire à quel type de Tri correspond ce dernier ?
    • Partager sur Facebook
    • Partager sur Twitter
      9 juillet 2010 à 17:03:03

      Si, il s'agit bien d'une forme de tr à bulles (dont l'algorithme peut varier légèrement selon l'implémentation, le principe restant le même).
      • Partager sur Facebook
      • Partager sur Twitter
        9 juillet 2010 à 17:06:33

        C'est une forme de tri à bulle.

        Pour des tris moins laids, il y a quelques liens dans ma signature.
        Sinon, en réféchissant à la méthode que tu utilises dans la vie courante pour trier, tu devrais pouvoir trouver un algorithme. ;)

        Le seul intérèt du tri à bulle c'est son efficacité sur des tableaux déjà triés. :-°
        • Partager sur Facebook
        • Partager sur Twitter
        Zeste de Savoir, le site qui en a dans le citron !
          9 juillet 2010 à 21:04:05

          Citation : vieks


          J'ai appris uniquement deux type de tri: par sélection



          Pour le tri par sélection, je te conseille d'aller lire le tuto de bluestorm.



          Citation : vieks


          #tri par sélection
          def triSel(ls):
              "tri par sélection sur une list"
              lls =len(ls)
              i =0
              while i <lls:
                  j =i +1
                  while j <lls:
                      if ls[j] <ls[i]: 
                          temp =ls[j]
                          ls[j] =ls[i]
                          ls[i] =temp
                      j +=1
                  i +=1
              return ls
          




          Tu as une forme ralentie du tri par sélection. Ton code n'est pas du tout pythonnique, c'est de la traduction du C (mauvais choix de boucle, échange avec temp).


          Citation : vieks


          # tri
          def tri(ls):
              "tri sur une list"
              lls =len(ls)
              i =0
              while i <lls:
                  if ls[i] <ls[i -1]:
                      temp =ls[i]
                      ls[i] =ls[i -1]
                      ls[i -1] =temp
                      i =0
                  i +=1
              return ls
          




          Je pense que tu n'as pas réalisé qu'en Python ls[-1] te renvoie le dernier élément du tableau. Par exemple, si tu essayes de trier la liste 4, 9, tu vas commencer par la mélanger en 9, 4 avant de la réordonner. Je suppose que ce n'était pas désiré.

          • Partager sur Facebook
          • Partager sur Twitter

          Tri d'une list

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown