Code source du tri "casiers"
public static void triCasier(int tableau[])
{
int longueur=tableau.length;
//on parcours le tableau afin d'en récupérer les valeurs minimales et maximales
int mini=tableau[0];
int maxi=tableau[0];
for(int i=1;i<longueur;i++)
{
if(mini>tableau[i])
{
mini=tableau[i];
}
if(maxi<tableau[i])
{
maxi=tableau[i];
}
}
//on construit un tableau contenant le nombre d'entiers maxi-mini+1
int tmpLong=maxi-mini+1;
int tmpTableau[]=new int[tmpLong];
//on initialise le tableau à 0
for(int i=0;i<tmpLong;i++)
{
tmpTableau[i]=0;
}
//puis on increment le compteur correspondant à chaque entier trouvé
for(int i=0;i<longueur;i++)
{
tmpTableau[tableau[i]-mini]++;
}
//enfin, on reconstitue le tableau initial classé
int compt=0;
for(int i=0;i<tmpLong;i++)
{
while(tmpTableau[i]>0)
{
tableau[compt]=mini+i;
tmpTableau[i]--;
compt++;
}
}
}