[C++]tri par propagation

Résolu
Bonjour,

Voila des heures que j'essai de mettre en place un tri par propagation. Mais je n'y arrive pas...J'ai beau retourner le programme dans tous les sens, rien a faire, je ne comprend pas pourquoi cela ne fonctionne pas...

C'est pourquoi je viens vous demander votre aide. Je pense que l'erreure ne dois pas petre monstrueuse mais suffisement annodine pour m'échaper. Voici le code :

for (i=N;i>2;i--)
{
for (j=1;j<i;j++)
{
if (Tab[j]>Tab[j+1])
{
temp=Tab[i];
Tab[i]=Tab[i+1];
Tab[i+1]=temp;
}
}
}


Est ce que qqn vois une solution ? Merci d'avance.
Configuration: Linux
Firefox 3.0.3

6 réponses

  1. J'ai fini par trouver la solution...c'est encore moi qui m'obstine a faire des boucle FOR alors qu'ici une boucle DO...WHILE est plus logique...enfin pour les interessés :

    do
    {
    for (j=0;j<N-1;j++)
    {
    if (Tab[j]>Tab[j+1])
    {
    temp=Tab[j];
    Tab[j]=Tab[j+1];
    Tab[j+1]=temp;
    i=0;
    }
    }
    i++;

    }
    while (i<N);
    2
    1. Et ça? Et c'est avec du FOR:

      for (I=N-1 ; I>0 ; I=FIN)
      {
      FIN=0;
      for (J=0; J<I; J++)
      if (A[J]>A[J+1])
      {
      FIN=J;
      AIDE=A[J];
      A[J]=A[J+1];
      A[J+1]=AIDE;
      }
      }
      0
      1. Effectivement ^^ Enfin bonne soirée à toi
        0
        1. Excuse moi, www.siteduzero.com ;) autant pour moi
          0
          1. Merci beaucoup Fhiter 13, je vais aller voire.

            Sinon une petite correstion :

            for (i=N;i>2;i--)
            {
            for (j=1;j<i;j++)
            {
            if (Tab[j]>Tab[j+1])
            {
            temp=Tab[j];
            Tab[j]=Tab[j+1];
            Tab[j+1]=temp;
            }
            }
            }
            0
            1. Je croit que.... je prefere ne pas trop m'avancer et dire de bêtises donc je recommande encore ( désolé pour la pub ) lesiteduzero.com ils ont un bon dossier C++ et ils sont plus qualifiés pour t'aider je pense.

              Bonne chance
              0