private static void TriFin(ListeTriable <Personne> liste)
 {
     for (int i = 0; i < liste.Count; i++)
     {
         Console.WriteLine(liste[i]);
     }
 }
            public ListeTriable <T> Tri()
            {
                ListeTriable <T> listeTriableTrie = new ListeTriable <T>();

                for (int i = 0; i < Count; i++)
                {
                    listeTriableTrie.Ajouter(this[i]);
                }
                return(listeTriableTrie);

                // tri a bulle en comparant les valeurs de this[i]

                /*
                 * int n = Count - 1;
                 * for (int i = n; i >= 1; i--)
                 * {
                 *  for (int j = 2; j <= i ; j++)
                 *  {
                 *      if (this[j-1] - this[j] < 0) // ca ne marche pas
                 *      {
                 *
                 *      }
                 *      T temp = this[j - 1];
                 *  }
                 * }
                 */
            }
        static void Main(string[] args)
        {
            // Test de ListeTriable
            // sur des entiers
            ListeTriable <int> listeTriable = new ListeTriable <int>();

            listeTriable.Ajouter(45);
            listeTriable.Ajouter(20);
            listeTriable.Ajouter(10);
            listeTriable.Ajouter(13);
            listeTriable.Ajouter(606);

            ListeTriable <int> listeTriableTrie = new ListeTriable <int>();

            listeTriableTrie = listeTriable.Tri(); //ne marche pas

            for (int i = 0; i < listeTriable.Count; i++)
            {
                Console.WriteLine("L'élement listeTriable[" + i + "] est " + listeTriable[i].ToString());
            }

            for (int i = 0; i < listeTriableTrie.Count; i++)
            {
                Console.WriteLine("L'élement listeTriableTrie[" + i + "] est " + listeTriableTrie[i].ToString());
            }

            // sur des personnes
            ListeTriable <Personne> listeTriablePersonne = new ListeTriable <Personne>();

            listeTriablePersonne.Ajouter(new Personne("Christine", "DESMAZES", 51));
            listeTriablePersonne.Ajouter(new Personne("Julia", "DESMAZES", 23));
            listeTriablePersonne.Ajouter(new Personne("Flora", "DESMAZES", 20));
            listeTriablePersonne.Ajouter(new Personne("Pierre", "DESMAZES", 52));

            Console.WriteLine("Avant le tri ----------------------------------------");
            for (int i = 0; i < listeTriablePersonne.Count; i++)
            {
                Console.WriteLine("L'élement " + i + " est " + listeTriablePersonne[i].ToString());
            }

            if (false) // code avant le multitache
            {
                // On tri selon la logique spécifiée... ici c'est le critere de l'age
                listeTriablePersonne.Trier(delegate(Personne p1, Personne p2)
                {
                    return(p1.Age - p2.Age);
                });
                Console.WriteLine("Après le tri ----------------------------------------");
                for (int i = 0; i < listeTriablePersonne.Count; i++)
                {
                    Console.WriteLine("L'élement " + i + " est " + listeTriablePersonne[i].ToString());
                }

                /*
                 * Avant le tri ----------------------------------------
                 * L'élement 0 est Christine DESMAZES -> 51 ans
                 * L'élement 1 est Julia DESMAZES -> 23 ans
                 * L'élement 2 est Flora DESMAZES -> 20 ans
                 * L'élement 3 est Pierre DESMAZES -> 52 ans
                 * Après le tri ----------------------------------------
                 * L'élement 0 est Flora DESMAZES -> 20 ans
                 * L'élement 1 est Julia DESMAZES -> 23 ans
                 * L'élement 2 est Christine DESMAZES -> 51 ans
                 * L'élement 3 est Pierre DESMAZES -> 52 ans
                 * */
            }
            else
            {
                listeTriablePersonne.DebuterTri(delegate(Personne p1, Personne p2)
                {
                    return(p1.Age - p2.Age);
                }, TriFin);

                Console.WriteLine("Après le tri ----------------------------------------");

                /*
                 * Avant le tri ----------------------------------------
                 * L'élement 0 est Christine DESMAZES -> 51 ans
                 * L'élement 1 est Julia DESMAZES -> 23 ans
                 * L'élement 2 est Flora DESMAZES -> 20 ans
                 * L'élement 3 est Pierre DESMAZES -> 52 ans
                 * Après le tri ----------------------------------------
                 * Pierre DESMAZES -> 52 ans
                 * Christine DESMAZES -> 51 ans
                 * Julia DESMAZES -> 23 ans
                 * Flora DESMAZES -> 20 ans*
                 * */
            }



            /*
             * InitTable();
             * System.Console.WriteLine("Tableau initial :");
             * AfficherTable();
             * TriBulle();
             * System.Console.WriteLine("Tableau une fois trié :");
             * AfficherTable();
             */
            /*
             *
             * Tableau initial :
             * 25 , 7 , 14 , 26 , 25 , 53 , 74 , 99 , 24 , 98 , 89 , 35 , 59 , 38 , 56 , 58 , 36 , 91 , 52 ,
             * Tableau une fois trié :
             * 7 , 14 , 24 , 25 , 25 , 26 , 35 , 36 , 38 , 52 , 53 , 56 , 58 , 59 , 74 , 89 , 91, 98 , 99 ,
             * */

            Console.ReadKey();
        }