Code source du tri par "creation"

trouve_position_suivant(tableau T,entier position_dernier,entier maxi)
    debut
        entier i
        entier longueur<-taille(T)
        entier valeur_dernier<-T(position_dernier)
        
        entier position_suivant<-(-1)
        entier valeur_suivant<-maxi

        //parcours du tableau pour rechercher la valeur suivante
        pour i=0 à (longueur-1) faire
            si tableau(i)=valeur_dernier & i>position_dernier alors
                retourner(i) //la valeur suivante est égale à la valeur du dernier élément trouvé
            fin si

            si tableau(i)>valeur_dernier & tableau(i)<valeur_suivant alors
                //on a trouvé une valeur qui pourrait être la suivante
                valeur_suivant<-tableau(i)
                position_suivant<-i            
            fin si

            si tableau(i)=maxi & position_suivant=-1
                //on a trouvé le plus grand élément du tableau
                //s'il n'y a pas d'élément suivant, la position de l'élément suivant est la position du dernier élément
                position_suivant<-i
            fin si
        fin pour

        retourner(position_suivant)
    fin

tri_par_creation(tableau T)
    debut
        entier longueur<-taille(T)
        tableau resultat
        taille(resultat)<-longueur

        entier position_dernier<-0
        entier mini<-T(0)
        entier maxi<-T(0)
        
        entier i

        //recherche du plus petit et du plus grand élément du tableau
        //recherche de la position du plus petit élément (phase d'initialisation)
    
        pour i=1 à (longueur-1) faire
            si T(i)<mini alors
                position_dernier<-i
                mini<-T(i)
            sinon
                maxi<-T(i)
            fin si
        fin pour

        //on place le premier élément du tableau destination
        resultat(0)<-mini

        pour i=1 à (longueur-1) faire
            position_dernier<-trouve_position_suivant(T,position_dernier,maxi) //recherche de la position de l'élément suivant
            
            si position_dernier<>-1 alors //si on a trouvé la position de l'élément suivant
                resultat(i)<-T(position_dernier) //on place cet élément dans le tableau destination            
            sinon //on n'a pas trouvé la position de l'élément suivant
                afficher("Erreur dans le cri par création, l'un des éléments a été perdu !!!!") //on soupçonne donc une erreur
            fin si
        fin pour
        
        retourner(resultat)
    fin