Algorithme de tri

Résolu/Fermé
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 - 26 déc. 2007 à 17:06
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 - 26 déc. 2007 à 19:30
Bonjour,
je ne comrend pas les deux dernières lignes d'un algorithme de tri (tri par selection directe),
si quelqu'un peut me l'expliquer ce serait impeccable.


for (i=imin+1;i<=imax; i++)
{
xtemp = T[i-1];
itemp=i-1;
for (j=i; j <=imax; j++)
if (T[j] < xtemp)
{
xtemp = T[j];
itemp = j;
}
T [itemp] = T [i-1];
T [i-1] = xtemp;
}

je ne comprend pas ces deux lignes ci...
T [itemp] = T [i-1];
T [i-1] = xtemp;

13 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
26 déc. 2007 à 18:19
c'est pour echanger deux valeur

T [itemp] = T [i-1]; ça veut dire que tu met dans T[j] la valeur de T[i-1] parce que itemp = j

T [i-1] = xtemp; la tu met dans dans T[i-1] la valeur de T[j] avant la premiere modification parce que xtemp= T[j]
1
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 140
26 déc. 2007 à 17:07
C'est du langage "C"
0
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 140
26 déc. 2007 à 18:36
salut,
au début del'algorithme on met
xtemp = T[i-1];
itemp=i-1;
on donne donc une valeur pour xtemp et itemp
ensuite on redonne
xtemp = T[j];
itemp = j;
pourquoi on donne deux valeur différentes à xtemp et itemp?
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
26 déc. 2007 à 18:47
c'est pour faire la comparaison entre T[j] et T[i-1] ici if (T[j] < xtemp) comme xtemp vaut T[i-1] a ce moment
0

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

Posez votre question
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 140
26 déc. 2007 à 19:02
re,
ok après le if on dit que
T[j] va dans xtemp et j dans itemp
ce que je comprend pas c'est ce que vient faire la le T [itemp]

encore merci pour tes explications mype
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
26 déc. 2007 à 19:05
ce moment T[itemp] = T[j] donc ça permet de metre la valeur de T[i-1] dans T[j]
0
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 140
26 déc. 2007 à 19:14
je pense avoir compris mais à ton avis, peut-on écrire dans cet algorithmeT[i] à la place de T[itemp]
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
26 déc. 2007 à 19:17
non tu peux metre T[j] a la place de T[itemp]
0
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 140
26 déc. 2007 à 19:21
si on peut mettre T[j]à la place de T[itemp], on peut mettre T[i] vu que dans la boucle "fo"r on dit que j=i...
ou alors j'ai loupé un épisode dans l'algorithme...
Si oui peux-tu me dire ou?

Merci d'avanve
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
26 déc. 2007 à 19:25
la boucle ça veut dire que j=i au debut mais ça evolue j n'est pas tout le temps egal a i
0
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 140
26 déc. 2007 à 19:26
ok, encore merci pour tes explications
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
26 déc. 2007 à 19:30
de rien content de tavoir aidé ;)

si t'as plus de probleme n'oublie pas de metre resolu
0
limbergh Messages postés 658 Date d'inscription dimanche 8 juillet 2007 Statut Membre Dernière intervention 29 juin 2010 140
26 déc. 2007 à 19:30
non je n'oublie pas et je pense l'avoir fais
0