TRI QUICKSORT

cs_nico54 Messages postés 2 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 5 février 2002 - 5 févr. 2002 à 23:59
StanOfSky Messages postés 43 Date d'inscription mardi 30 mars 2004 Statut Membre Derniè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.

https://codes-sources.commentcamarche.net/source/9309-tri-quicksort

StanOfSky Messages postés 43 Date d'inscription mardi 30 mars 2004 Statut Membre Derniè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és 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 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és 62 Date d'inscription jeudi 18 avril 2002 Statut Membre Dernière intervention 29 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és 2 Date d'inscription mardi 5 février 2002 Statut Membre Derniè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];
}
}


Salut à tous
Nicolas
Rejoignez-nous