cs_nico54
Messages postés2Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention 5 février 2002
-
5 févr. 2002 à 23:59
StanOfSky
Messages postés43Date d'inscriptionmardi 30 mars 2004StatutMembreDernière intervention 7 octobre 2006
-
30 avril 2004 à 15:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
StanOfSky
Messages postés43Date d'inscriptionmardi 30 mars 2004StatutMembreDernière intervention 7 octobre 2006 30 avril 2004 à 15:28
il serait interessant d'ajouter un pointeur sur une fonction de comparaison en entrée, comme ca ton quicksort serait capable de trier tout type d'élément du moment que la bonne fonction de comparaison est entrée en parametre ;)
en plus tu n'aurai pas besoin d'inverser le tableau à la fin de ton algo pour un tri croissant ou décroissant, il suffirait juste de passer en parametre la fonction croissante, ou décroissante
bool croissant(type a, type b)
{
return ab;
}
cs_Zeroc00l
Messages postés367Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention11 février 2010 10 août 2003 à 15:04
Plus speed car optimisé en asm surement ...
Dommage j'aurais bien aimé un petit .doc ou .txt ou des images et n'importe koi qui expliquerait ... le concept, la methode utilise (fonctionnement), principe...
Dommage... :(
P.S : je rajoute encore '...' pour n avoir un par ligne en moyenne...
ZeroCool (qui flanne...)
cs_nikko
Messages postés62Date d'inscriptionjeudi 18 avril 2002StatutMembreDernière intervention29 septembre 2004 25 mars 2003 à 15:12
Enfin qqn qui fait autre chose qu'un tri à bulles ! Note que le tri qsort est déjà codé en C (du moins sous Unix/Linux) et fait partie des fonctions 'standard'. Et c'est encore plus speed !
cs_nico54
Messages postés2Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention 5 février 2002 5 févr. 2002 à 23:59
J'ai testé le prog avec des chiffres identiques et il ne tri pas correctement, j'ai modifier la fonction tri pour resoudre ce probleme :
//////////fonction tri//////////
tri(float tab[20], int n)
{
int i,j ;
float pivot=tab[0]; //j'ai initialisé le pivot sur la premiere case du tableau
int ng=0;
int nd=0;
float tabg[20];
float tabd[20];
for (i=1;i<n;i++)
{
if (tab[i]pivot||tab[i]==pivot) // copie des elements superieurs ou egaux au pivot dans tabd
{
tabd[nd]=tab[i];
nd++;
}
}
if(ng>1)
{
tri(tabg,ng);
}
if(nd>1)
{
tri(tabd,nd);
}
for (i=0;i<ng;i++)
{
tab[i]=tabg[i];
}
tab[ng]=pivot;
for (j=0;j<nd;j++)
{
tab[j+ng+1]=tabd[j];
}
}
30 avril 2004 à 15:28
en plus tu n'aurai pas besoin d'inverser le tableau à la fin de ton algo pour un tri croissant ou décroissant, il suffirait juste de passer en parametre la fonction croissante, ou décroissante
bool croissant(type a, type b)
{
return ab;
}
10 août 2003 à 15:04
Dommage j'aurais bien aimé un petit .doc ou .txt ou des images et n'importe koi qui expliquerait ... le concept, la methode utilise (fonctionnement), principe...
Dommage... :(
P.S : je rajoute encore '...' pour n avoir un par ligne en moyenne...
ZeroCool (qui flanne...)
25 mars 2003 à 15:12
5 févr. 2002 à 23:59
//////////fonction tri//////////
tri(float tab[20], int n)
{
int i,j ;
float pivot=tab[0]; //j'ai initialisé le pivot sur la premiere case du tableau
int ng=0;
int nd=0;
float tabg[20];
float tabd[20];
for (i=1;i<n;i++)
{
if (tab[i]pivot||tab[i]==pivot) // copie des elements superieurs ou egaux au pivot dans tabd
{
tabd[nd]=tab[i];
nd++;
}
}
if(ng>1)
{
tri(tabg,ng);
}
if(nd>1)
{
tri(tabd,nd);
}
for (i=0;i<ng;i++)
{
tab[i]=tabg[i];
}
tab[ng]=pivot;
for (j=0;j<nd;j++)
{
tab[j+ng+1]=tabd[j];
}
}
Salut à tous
Nicolas