Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème tableau exercice ISN

tri de tableau par insertion

Sujet résolu
    23 décembre 2015 à 18:19:05

    Bonjour, j'ai un problème je dois faire un exercice d'ISN où je doit trier un tableau par insertion mais il me dit qu'il y a un problème d’index pour le tableau que j'ai vérifié pouvez vous m'aider svp.

    Voici le code:

    import random
    def tri_insertion(T):
        bien_ranger=False
        while not bien_ranger:
            i=1
            bien_ranger=True
            while i<len(T):
                X=T[i]
                j=i
                print("i=" + str(i))
                print("j-1=" + str(j-1))
                while T[j-1]>X:
                    T[j]=T[j-1]
                    j=j-1
                    bien_ranger=False
                T[j]=X
                i=i+1
        return T
    
    tableau=[3,2,1]
    #a=0
    #while a<20:
    #    r=random.randint(0,255)
    #    tableau.append(r)
    #   a=a+1
    print(tableau)
    tableau=tri_insertion(tableau)
    print(tableau)
    

    ainsi que la console

    [3, 2, 1]
    i=1
    j-1=0
    i=2
    j-1=1
    Traceback (most recent call last):
      File "/home/maxime/Bureau/tri par insertion.py", line 27, in <module>
        tableau=tri_insertion(tableau)
      File "/home/maxime/Bureau/tri par insertion.py", line 12, in tri_insertion
        while T[j-1]>X:
    IndexError: list index out of range




    -
    Edité par maximebisotto1 23 décembre 2015 à 18:19:48

    • Partager sur Facebook
    • Partager sur Twitter
      24 décembre 2015 à 8:27:57

      Je t'ai fait un tri par insertion commenté en espérant que ce ne soit pas trop obscure ^^'

      from random import randint
      
      
      def generer_tableau(taille, rmax, rmin=0):
          """Génération d'un tableau de nombres entiers aléatoires.
      
          Args:
              taille (int): Taille du tableau.
              rmax (int): Valeur maximale des nombres entiers.
              rmin (int [optional]): Valeur minimale des nombres entiers.
      
          Returns:
              list: Retourne un tableau de nombres entiers aléatoires.
      
          """
          # Liste en intention -> Super pratique
          # Elle génère une liste de nombres alétoires entre rmin et rmax de longueur
          # 'taille' en une seule ligne élégante.
          return [randint(rmin, rmax) for i in range(0, taille)]
      
      
      def tri_par_insertion(tableau):
          """implémentation du tri par insertion d'un tableau.
      
          Args:
              tableau (list): Tableau a trier.
      
          Returns:
              list: Retourne le tableau trier.
      
          """
          for i in range(1, len(tableau)):
              j = i - 1       # Emplacement de l'élément à trier
              x = tableau[i]  # Elément suivant
      
              # Tant que élement a tier est supérieur à élement suivant
              while j > -1 and tableau[j] > x:
                  tableau[j+1] = tableau[j]  # Element suivant = Element à trier
                  j -= 1                     # On retourne une case en arrière
      
              # La valeur de l'emplacement a trier prend la valeur
              # de élément suivant qui a été remplacé
              tableau[j+1] = x
      
          return tableau
      
      if __name__ == "__main__":
          tableau = generer_tableau(10, 250)
          print(tableau)                      # Affiche le tableau non trier
          print(tri_par_insertion(tableau))   # Affiche le tableau trier
      



      • Partager sur Facebook
      • Partager sur Twitter
        31 décembre 2015 à 14:10:58

        je l'ai modifié il ne marchait pas

        import random
        def tri_insertion(T):
            bien_ranger=False
            while not bien_ranger:
                bien_ranger=True
                for i in range (1,len(T)):
                    j=i-1
                    while T[j]>T[i]:
                        T[j+1],T[j]=T[j],T[j+1]
                        j=j-1
                        bien_ranger=False
                    
            return T
        
        tableau=[]
        for a in range (0,20):
            r=random.randint(0,255)
            #r=hex(r)
            tableau.append(r)
        print(tableau)
        tableau=tri_insertion(tableau)
        for a in range (0,len(tableau)):
            tableau[a]=chr(tableau[a])
        print(tableau)
        



        • Partager sur Facebook
        • Partager sur Twitter

        problème tableau exercice ISN

        × 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