aytone85
Messages postés2Date d'inscriptionmercredi 20 octobre 2004StatutMembreDernière intervention 2 février 2006 2 févr. 2006 à 19:27
Salut, je suis en train de me pencher sur les tris en ce moment et je suis tombé sur ta source, je m'interesse plus particulièrement au tri rapide.
Je ne sais pas si tu as trouvé ton erreur pour le décalage d'indice, mais le gros point fort du tri rapide est le pivot. Tu intègres pourtant dans ton code la position du pivot mais tout est fait comme si il etait forcément en première position, ton code ne marche donc pas dans toutes les situations. Une petite modif suffit, lorsque tu choisis ton pivot, tu le change de place avec le premier élément du tableau et tu commence ta partition du tableau après le pivot. il te suffit ensuite de replacer le pivot entre tes deux partitions. C'est une solution mais il en existe plein. Je pense que celle ci fonctionne, je ne l'ai pas testé mais sur papier ça a l'air de fonctionner, mais surtout tu as le choix du pivot sur la premiere partition, ça peut accelerer le calcul si sil est bien choisi (ex: pivot = valeur la plus proche de la valeur moyenne de tous le tableau).
Merci de vos remarque les gars! ça me permet de mieux m'appliquer dans mes codes!
C'est vrai qu'a la limite elles sont choquantes, mais c'est indispensable:C'est à ça qu'on
reconnait des bons codeurs!
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 16 déc. 2005 à 10:54
La demarche pour l'utilisateur est interessante mais ne doit pas se faire au detriment des codeurs qui sont les premiers vises et plus particulierment sur ce site....
on se dit sa surtout quand on voit ta fonction clignote() ...
Pour l'areation du code, c'est tres important et tres bien d'avoir cette notion en tete et de l'appliquer, mais il faut faire attention de ne pas enrumer quelqu'un avec un trop plein d'air !!! ;-)
Si jamais tu souhaite quand meme faire une belle presentation (ce qui est normal), regarde du cote de devcpp qui creer lui meme le squelette d'une application win32 et si tu veux garder un code portable, ba t'as qu'a taper dans le wxWindows qui est pas trop compliquer a digerer ou meme Qt qui est a mon avis encore plus simple.... regarde mes sources tu verras 2 exemples de bases d'utilisation de cette lib (frames, boutons, gestionnaire d'action, ...) et il y en a encore d'autre sur ce site.
Cela te permettra un code vachment plus sympa a regarder et qui aura un interet tout autre.... :-)
@++ et bon coding !
Cyberboy2054
Messages postés173Date d'inscriptionjeudi 20 décembre 2001StatutMembreDernière intervention22 août 2008 14 déc. 2005 à 20:19
Je veux pas faire le rabat joie, mais la console, tu peux la faire clignoter que tu veux, elle restera toujours moche :/
(oui je sais, t'as pas encore dépassé le stade de la console mais peu importe)
Par contre si tu veux progresser de manière utile, remplace cette infame fonction clignotte par,
for (int i = 0; i < 26;i++)
{
clrscr();
textcolor(15);
printf(" \n \n \n \n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n");
printf(" NTCHANA NYAMSI ARLAIS");
delay(M);
}
Mais bon, c'est toujours pas ca :/
Sinon, plutot que de sauter une ligne entre chaque fonction, découpe ton programme en d'autres sous fonctions aux noms explicites ( genre lecture_tableau(), affiche_menu(), etc... )
comme ca tu gagneras en clarté
Je suis conscient du fait que l'éfficacité passe avant le design! Mais un travail pas beau du tout ne vaut pas
un clou!Je me suis rendu compte que ce qui plait à l'utilisateur courant,c'est beaucoup plus la beauté...
C'est la raison pour laquelle j'essai autant que faire ce peut d'associer efficacité et design!
Et la fonction clignote donne un certain effet au programme.
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 9 déc. 2005 à 19:49
C'est vraiment important de faire clignoter du texte pendant qu'ont fait du trie ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 déc. 2005 à 19:34
Bien sur, et les boucles tu connais pas?
cs_magma
Messages postés198Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention18 mars 2011 9 déc. 2005 à 19:27
La fonction Clignote() est longue
parce qu'elle va clignoter 26 fois !
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 déc. 2005 à 17:59
C'est dommage de s'attarder autant sur des choses inutiles, comme la couleut du texte.
Peux-tu par exemple expliquer à quoi sert la fonction clignote qui fait je sais pas combien de lignes?
Pour le code des algo, certains dépendent tous de N, je pense qu'il faudrait enlever cela
2 févr. 2006 à 19:27
Je ne sais pas si tu as trouvé ton erreur pour le décalage d'indice, mais le gros point fort du tri rapide est le pivot. Tu intègres pourtant dans ton code la position du pivot mais tout est fait comme si il etait forcément en première position, ton code ne marche donc pas dans toutes les situations. Une petite modif suffit, lorsque tu choisis ton pivot, tu le change de place avec le premier élément du tableau et tu commence ta partition du tableau après le pivot. il te suffit ensuite de replacer le pivot entre tes deux partitions. C'est une solution mais il en existe plein. Je pense que celle ci fonctionne, je ne l'ai pas testé mais sur papier ça a l'air de fonctionner, mais surtout tu as le choix du pivot sur la premiere partition, ça peut accelerer le calcul si sil est bien choisi (ex: pivot = valeur la plus proche de la valeur moyenne de tous le tableau).
void Echange (int Tab[], inti, int j)
{
int Temp = Tab[i] ;
Tab[i] = Tab[j] ;
Tab[j] = Temp ;
}
void TriRapide(int Tab[],int Debut, int p, int Fin)
{
int i, j, Temp, ValPivot = Tab[p] ;
if (Fin <= Debut) return() ;
if (p != Debut) Echange (Tab, p, Debut) ;
i = Début ;
j = Fin +1 ;
Do
{
while ((Tab[++i] < ValPivot) && (i <= Fin)) ;
while ((Tab[--j] > ValPivot) && (j > Debut)) ;
if (i < j) Echange(Tab, i, j) ;
}
while(i < j) ;
Echange(Tab, j, Debut)
TriRapide(Tab, Debut, Debut, j-1) ;
TriRapide(Tab, j+1, j+1, Fin) ;
}
A bientôt et si tu testes cette version, dis moi si ça marche !
22 déc. 2005 à 19:57
C'est vrai qu'a la limite elles sont choquantes, mais c'est indispensable:C'est à ça qu'on
reconnait des bons codeurs!
16 déc. 2005 à 10:54
on se dit sa surtout quand on voit ta fonction clignote() ...
Pour l'areation du code, c'est tres important et tres bien d'avoir cette notion en tete et de l'appliquer, mais il faut faire attention de ne pas enrumer quelqu'un avec un trop plein d'air !!! ;-)
Si jamais tu souhaite quand meme faire une belle presentation (ce qui est normal), regarde du cote de devcpp qui creer lui meme le squelette d'une application win32 et si tu veux garder un code portable, ba t'as qu'a taper dans le wxWindows qui est pas trop compliquer a digerer ou meme Qt qui est a mon avis encore plus simple.... regarde mes sources tu verras 2 exemples de bases d'utilisation de cette lib (frames, boutons, gestionnaire d'action, ...) et il y en a encore d'autre sur ce site.
Cela te permettra un code vachment plus sympa a regarder et qui aura un interet tout autre.... :-)
@++ et bon coding !
14 déc. 2005 à 20:19
(oui je sais, t'as pas encore dépassé le stade de la console mais peu importe)
Par contre si tu veux progresser de manière utile, remplace cette infame fonction clignotte par,
for (int i = 0; i < 26;i++)
{
clrscr();
textcolor(15);
printf(" \n \n \n \n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n");
printf(" NTCHANA NYAMSI ARLAIS");
delay(M);
}
Mais bon, c'est toujours pas ca :/
Sinon, plutot que de sauter une ligne entre chaque fonction, découpe ton programme en d'autres sous fonctions aux noms explicites ( genre lecture_tableau(), affiche_menu(), etc... )
comme ca tu gagneras en clarté
11 déc. 2005 à 22:24
un clou!Je me suis rendu compte que ce qui plait à l'utilisateur courant,c'est beaucoup plus la beauté...
C'est la raison pour laquelle j'essai autant que faire ce peut d'associer efficacité et design!
Et la fonction clignote donne un certain effet au programme.
9 déc. 2005 à 19:49
9 déc. 2005 à 19:34
9 déc. 2005 à 19:27
parce qu'elle va clignoter 26 fois !
9 déc. 2005 à 17:59
Peux-tu par exemple expliquer à quoi sert la fonction clignote qui fait je sais pas combien de lignes?
Pour le code des algo, certains dépendent tous de N, je pense qu'il faudrait enlever cela