voila un tri par insertion que j'ai fait pour classer des tableaux de chaines de caractères :
char **tab
void Str_Insertion(char **tab, int taille)
{
int i = 1, j, k;
char *temp;
while (i < taille)
{
j = i - 1;
if (strCmp(tab[j], tab[i]) < 0)
{
temp = (char *) tab[i];
while (j >= 0 && strCmp(tab[j], temp) < 0) tab[j+1] = (char *) tab[j--];
tab[j+1] = (char *) temp;
}
else i++;
}
}
mais bon ce genre de fonction est adaptable aux tri de n'importe quoi tant qu'on lui apporte une fonction qui compare deux elements.
en l'occurence ici :
int strCmp(char *str1, char *str2)
{
int i = 0;
while (str1[i] == str2[i] && str1[i] != 0 && str2[i] != 0) i++;
return (str2[i] - str1[i]);
}
pour classer des nombre dans l'odre decroissant :
int strCmp(int a, int b)
{
return a-b; // ou b-a j'ai pas réfléchi
}
et ainsi de suite.....