Code source du tri par "creation"

    private static int posSuivant(int tableau[],int posDernier,int maxi)
        {
        int longueur=tableau.length;
        int valDernier=tableau[posDernier];
        
        int posSuivant=-1;
        int valSuivant=maxi;
        
        for(int i=0;i<longueur;i++)
            {
            if(tableau[i]==valDernier && i>posDernier)
                {
                return(i);
                }
            if(tableau[i]>valDernier && tableau[i]<valSuivant)
                {
                valSuivant=tableau[i];
                posSuivant=i;
                }
            if(tableau[i]==maxi && posSuivant==-1)
                {
                posSuivant=i;
                }
            }
        
        return(posSuivant);
        }


    public static int[] triParCreation(int tableau[])
        {
        int longueur=tableau.length;
        int result[]=new int[longueur];

        int posDernier=0;
        int mini=tableau[0];
        int maxi=tableau[0];
        for(int i=1;i<longueur;i++)
            {
            if (tableau[i]<mini)
                {
                posDernier=i;
                mini=tableau[i];
                }
            else if (tableau[i]>maxi)
                {
                maxi=tableau[i];
                }
            }
        result[0]=mini;

        for(int i=1;i<longueur;i++)
            {
            posDernier=posSuivant(tableau,posDernier,maxi);
            if (posDernier!=-1)
                {
                result[i]=tableau[posDernier];
                }
            else
                {
                System.err.println("Erreur dans le triParCreation, l'un des éléments a été perdu !!!");
                }
            }        
        return(result);
        }