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++;
                }
            }
        }