[C++]tri par propagation

Résolu/Fermé
Carnat89 Messages postés 14 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 6 mai 2014 - 15 nov. 2008 à 17:41
 futursoa - 9 févr. 2011 à 15:23
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.

6 réponses

Carnat89 Messages postés 14 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 6 mai 2014 2
15 nov. 2008 à 18:40
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
Fhiter13 Messages postés 53 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 20 décembre 2008
15 nov. 2008 à 17:44
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
Carnat89 Messages postés 14 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 6 mai 2014 2
15 nov. 2008 à 17:45
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
Fhiter13 Messages postés 53 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 20 décembre 2008
15 nov. 2008 à 17:48
Excuse moi, www.siteduzero.com ;) autant pour moi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fhiter13 Messages postés 53 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 20 décembre 2008
15 nov. 2008 à 18:41
Effectivement ^^ Enfin bonne soirée à toi
0
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