Partage
  • Partager sur Facebook
  • Partager sur Twitter

Prolème fonction pour trier un tableau

    11 décembre 2018 à 15:21:51

    Bonjour,

    Cela va peut-être paraître simple pour certain mais je bloque sur une fonction censé classé un tableau par ordre croissant... Est ce que quelqu'un pourrait me donner des pistes a partir de ceci : 

    int triTableau(int tableau[], int tailleTableau)
    {
        int i = 0;
        int ii = 0;
        int tableauClasse[4] = {0};
        int petit = 1;
        int a = 0;
        int tour = 0;
    
        do
        {
    
        for(ii=0; ii < tailleTableau; ii++)
        {
            if (tableau[i] < tableau[ii] && petit == 1)
            {
                petit = 1;
            }
               else
               {
                   petit = 0; // on verifi que la valeur 1 est plus petites que toute les autres si elle l'est petit est vrai
               }
    
        }
        if  ( petit = 1 )
        {
            tableauClasse[a] = tableau[i];
            a++; // si petit est vrai on la met en postion 1 
               }
    
               tour ++;
               i++;
    
        }while(tour < tailleTableau); // on refait l'opération pour la deuxième place
    
    
    
    
    
    i = 0;
        for(i=0; i < tailleTableau; i++)
          {
    
            tableau[i] = tableauClasse[i];
          }
    }

    merci d'avance,

    • Partager sur Facebook
    • Partager sur Twitter
      13 décembre 2018 à 13:39:34

      Bonjour,

      Pour ne pas te faire le travail à ta place non plus, je te propose un algo de tri par selection ...
      A toi de le traduire en C, ou le langage que tu souhaite ;)

      fonction SelectSort(tab[n])
      i, j, min, indice: entier
      début
       Pour i de 1 à n-1 faire
       min = tab[i]
       indice = i
       Pour j de i+1 à n faire
       Si (tab[j] < min) alors
       min = tab[j]
       indice = j
       fin si
       fin pour
       tab[indice] = tab[i]
       tab[i] = min
       fin pour
      fin

      Ce n'est pas le tri le plus opti, mais il est simple !

      • Partager sur Facebook
      • Partager sur Twitter
        14 décembre 2018 à 0:30:27

        Il y a pleins de tri qui sont plus ou moins perfomants : le tri par sélection fait parti des plus nulles mais aussi des plus simples à faire !

        Le principe ? Tu cherches le maximum de la liste de taille n et tu l'échanges avec le dernier élément de la liste, puis tu fais ça pour le reste de la liste de taille n-1 ( tu echangeras avec l'avant dernier du coup )

        Exemple :

        [7,2,5] -> 7 est le max, echange 7 et 5

        [5,2,7] -> 5 est le max, echange 5 et 2

        [2,5,7] -> Liste croissante

        -
        Edité par MrsSniperMrsniper 14 décembre 2018 à 12:18:07

        • Partager sur Facebook
        • Partager sur Twitter
          14 décembre 2018 à 9:39:27

          MrsSniperMrsniper a écrit:

          Il y a pleins de tri qui sont plus ou moins perfomants : le tri à bulle fait parti des plus nulles mais aussi des plus simples à faire !

          Le principe ? Tu cherches le maximum de la liste de taille n et tu l'échanges avec le dernier élément de la liste, puis tu fais ça pour le reste de la liste de taille n-1 ( tu echangeras avec l'avant dernier du coup )

          Ceci est un tri par sélection, pas un tri à bulles.

          • Partager sur Facebook
          • Partager sur Twitter
            14 décembre 2018 à 10:09:06

            Le tri à bulles c'est plutôt :

            Parcourir tout le tableau en comparant les éléments successifs, les échanger s'ils ne sont pas correctement ordonnés.
            Si on a tout parcouru sans faire d'échange, c'est fini. Sinon on recommence.
            C'est le plus basique mais est très loin d'être le plus performant.

            J'ai une préférence pour le tri par insertion qui est à peine plus complexe. C'est aussi un algorithme O(n^2) mais il est souvent nettement plus rapide.

            • Partager sur Facebook
            • Partager sur Twitter

            En recherche d'emploi.

              16 décembre 2018 à 15:04:28

              Okey merci beaucoup les gars j'ai compris maintenant

              edit : 

              Okey alors j'ai voulu tenté le tri à bulles je pensais avoir compris mais j obtient un résultat complètement foireux...

              int triTableau(int tableau[], int tailleTableau)
              {
                  int i = 0;
                  int ii = 0;
                  int retienTableau = 0;
              
              for (ii =0; ii < tailleTableau; ii++)
              {
                  for (i =0; i < tailleTableau; i++)
                  {
                      if (tableau[i] > tableau[i+1]) // si le nombre x du tableau est superieur a y
                      {
              
                          retienTableau = tableau[i+1];
                          tableau[i+1] = tableau[i];
                          tableau[i] = retienTableau; // on interchange les deux nombres
                          }
              
                  }
                  tailleTableau--;
              }

              merci en tout cas

              -
              Edité par JulesDelaunayLamiraud 16 décembre 2018 à 15:57:17

              • Partager sur Facebook
              • Partager sur Twitter
                16 décembre 2018 à 21:29:16

                Dans la comparaison avec l'élément suivant, il y a un bug en bout de tableau, lorsqu'il n'y a pas d'élément suivant.
                • Partager sur Facebook
                • Partager sur Twitter

                Prolème fonction pour trier un tableau

                × 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