c#: Trier des tableaux et des matrices

c#: Trier des tableaux et des matrices

 


  1. Définition d’un algorithme de Tri
    • Les tableaux permettent de stocker plusieurs éléments de même type au sein d’une seule entité, Lorsque le type de ces éléments possède un ordre total, on peut donc les ranger en ordre croissant ou décroissant,
    • Trier un tableau c’est donc ranger les éléments d’un tableau en ordre croissant ou décroissant Dans ce cours on ne fera que des tris en ordre croissant Il existe plusieurs méthodes de tri qui se différencient par leur complexité d’exécution et leur complexité de compréhension pour le programmeur, nous examinons ce tutoriel le tri à bulles (Bubble Sort)
    • Tous les algorithmes de tri utilisent une procédure qui permet d’échanger(de permuter)la valeur de deux variables

  2. Tri à bulles (Bubble Sort)
    • Principe de la méthode: Sélectionner le minimum du tableau en parcourant le tableau de la fin au début et en échangeant tout couple d’éléments consécutifs non ordonnés.
    • Exemple

      • Par exemple, pour trier <123,132,42,91,66,13>, on va avoir les boucles suivantes:
      • i=1: i=2: i=3: i=4: i=5:
        <123,132,42,91,66,13>
        <123,132,42,91,13,66>
        <123,132,42,13,91,66>
        <123,132,13,42,91,66>
        <123,13,132,42,91,66>
        <13,123,132,42,91,66> <42,123,132,66,91> <66,132,115,91> <91,123,132>

        Donc en sortie: <13,42,66,91,123,132>

    • Le tri à bulle, mieux connu sous le nom de «Bubble Sort» est habituellement utilisé à des fins d’apprentissage. L’idée derrière cette technique est très simple, parcourir le tableau et permuter deux éléments lorsque cela s’avère nécessaire. Vous trouverez la réponse que vous souhaitez, à l’aide du code source C# (C Sharp) suivant :
    • using System; 
      using System.Collections.Generic; 
      using System.Linq; 
      using System.Text; 
       
      namespace TriBubble 
      { 
          class Program 
          { 
              static void Main(string[] args) 
              { 
                  const int MaxTableau = 8; 
                  int K,L,I,J; 
                  int[] Tableau = { 15, 10, 23, 2, 8, 9, 14, 16 }; 
                  Console.Write("Avant:"); 
                  for(K = 0; K < MaxTableau; K++) Console.Write(Tableau[K] + ", "); 
        
                  for(I = MaxTableau - 2;I >= 0; I--) { 
                      for(J = 0; J <= I; J++) { 
                          if(Tableau[J + 1] < Tableau[J]) { 
                              int t = Tableau[J + 1]; 
                              Tableau[J + 1] = Tableau[J]; 
                              Tableau[J] = t; 
                          } 
                      } 
                  } 
                  Console.WriteLine(); 
                  Console.Write("Après:"); 
                  for(L = 0; L < MaxTableau; L++) { 
                      Console.Write(", " + Tableau[L]); 
                  } 
                  Console.WriteLine();  
              } 
          } 
      } 
      

    Exercices d’application

    1. Exercice
      1. Écrire un programme GestionTableau qui qui va appeler les méthodes suivantes.
      2. Déclarez un tableau tableau de type int de 10 entiers
      3. Écrivez une méthode Remplirtableau qui remplit le tableau avec des entiers entre 1 et 100 au hasard.
      4. Écrivez une méthode AffichageTab qui vous permet d’afficher le contenu du tableau.
      5. Écrivez une méthode tabMini qui renvoie son plus petit élément.
      6. Écrivez une méthode tabMax qui renvoie son plus grand élément.
      7. Écrivez une méthode TriTab qui vous permet de trier(tri à bulles) dont l’ordre croissant et d’afficher votre tableau.
      8. Écrivez une méthode tabSomme qui prend le type int comme valeur de retour et qui renvoie la somme des éléments du tableau.
      9. Afficher la moyenne des éléments du tableau.
      10. Correction
          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Text;
          using System.Threading.Tasks;
          
          namespace GestionTableau
          {
              class Program
              {
                  static int[] tableau = new int[10];
                  static void Main(string[] args)
                  {
                      remplirTableau();
                      AffichageTab();
                      tabMini();
                      tabMax();
                      TriTab();
                 Console.WriteLine("La somme est: " + tabSomme() + " ");
                 Console.WriteLine("La moyenne est: "+(tabSomme()/tableau.Length));
                  }
                  static void remplirTableau()
                  {
                       
                      Random rnd = new Random();
                      // affectation de valeurs entières, pris au hasard entre 1 et 100, au tableau
                      for (int i = 0; i < 10; i++)
                      {
                          tableau[i] = rnd.Next(1, 101);
                      }
                      
                     
                  }
                  static void AffichageTab()
                  {
                      //affichage des valeurs du tableau
                      for (int i = 0; i < 10; i++)
                      {
                          Console.WriteLine(tableau[i] + " ");
                      }
                  }
                 static void tabMini()
                  {
                      int min=101;
                      //Recherche de minimum
                      for (int i = 0; i < 10; i++)
                      {
                          if (min > tableau[i])
                              min = tableau[i];
                      }
                          Console.WriteLine("Le minimum est: " +min + " ");
                  }
                  static void tabMax()
                  {
                      int max=0;
                      //Recherche de maxmimum
                      for (int i = 0; i < 10; i++)
                      {
                          if (max < tableau[i])
                              max = tableau[i];
                      }
                          Console.WriteLine("Le maximum est: " +max + " ");
                  }
                  static void TriTab()
                  {
                      int t;
                      //Triage du tableau
                      for (int i = 0; i < 9; i++)
                      {
                          for (int j = 0; j < 10 - 1; j++)
                          {
          
                              if (tableau[j] > tableau[j+1])
                              {
                                  t = tableau[j + 1];
                                  tableau[j+1] = tableau[j];
                                  tableau[j]=t;
                              }
                              
                          }
                      }
                      for (int i = 0; i < 10; i++)
                      {
                          Console.WriteLine(tableau[i]);
                      }
                  }
                  static double tabSomme()
                  {
                      int somme=0;
                      for (int i = 0; i < 10; i++)
                      {
                          somme += tableau[i];
                            
                      }
                      return somme;
                  }
              }
          }
          
          
    2. Exercice
      1. Écrire un programme qui demande à l’utilisateur de saisir 10 entiers qui seront stockés dans un tableau
      2. Le programme doit afficher le contenu du tableau.
      3. Le programme demande à l’utilisateur de saisir un entier n.
      4. Le programme doit afficher l’entier.
      5. Le programme doit rechercher si l’entier n se trouve dans le tableau et afficher “n se trouve dans le tableau” ou “n ne se trouve pas dans le tableau.
      Correction
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        
        namespace exercice2
        {
            class Program
            {
                static int [] tab=new int[10];
                static void Main(string[] args)
                {
                    exercice_2();
                    trouveelement();
                }
                static void exercice_2() 
                {
                    for(int i=0;i<10;i++)
                    {
                        Console.WriteLine("Saisir lélémént {0}" , i+1);
                        //if(isNumeric(Console.ReadLine()))
                        //{
                            tab[i] =Convert.ToInt32( Console.ReadLine());
                        //}
                       
                    }
                    for (int i = 0; i < 10; i++)
                    {
                        Console.WriteLine("L'élémént {0} est : {1}" ,i, tab[i]);
                    }
                }
                static void trouveelement()
                {
                    int n;
                    Console.WriteLine("Saisir lélémént n ");
                    n= Convert.ToInt32(Console.ReadLine());
                    for (int i = 0; i < 10; i++)
                    {
                        //Console.WriteLine("Saisir lélémént {0}" + tab[i]);
                        if (n==tab[i])
                        {
                            Console.WriteLine("L'élémént {0} existe dans le tableau",n);
                            break;
                        }
                        else
                        {
                            if(i==9)
                            Console.WriteLine("L'élémént {0} n'existe pas dans le tableau", n);
                            
                        }
        
                    }
                }
                static bool isNumeric(string valeur)
                {
                    if (string.IsNullOrEmpty(valeur))
                        return false;
                    foreach (char ch in valeur.ToCharArray())
                        if (char.IsLetter(ch))
                            return false;
                    return true;
                }
            }
        }
        
        
    3. Exercice
      1. Écrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau.
      2. Le programme doit afficher le contenu du tableau.
      3. Le programme doit trier le tableau par ordre croissant et doit afficher le contenu du tableau.
      4. Le programme doit trier le tableau par ordre décroissant et doit afficher le contenu du tableau.
      Correction
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Threading.Tasks;
        
        namespace exercice3
        {
            class Program
            {
                static int [] tab=new int[10];
                static void Main(string[] args)
                {
                    exercice_3();
                    TriTabCroissant();
                TriTabDecroissant();
                }
                static void exercice_3() 
                {
                    for(int i=0;i<10;i++)
                    {
                        Console.WriteLine("Saisir lélémént {0}" , i+1);
                        //if(isNumeric(Console.ReadLine()))
                        //{
                            tab[i] =Convert.ToInt32( Console.ReadLine());
                        //}
                       
                    }
                    for (int i = 0; i < 10; i++)
                    {
                        Console.WriteLine("L'élémént {0} est : {1}" ,i, tab[i]);
                    }
                }
                static void TriTabCroissant()
                {
                    Console.WriteLine("Triage du tableau dans l'ordre croissant");
                    int t;
                    //Triage du tableau
                    for (int i = 0; i < 9; i++)
                    {
                        for (int j = 0; j < 10 - 1; j++)
                        {
        
                            if (tab[j] > tab[j + 1])
                            {
                                t = tab[j + 1];
                                tab[j + 1] = tab[j];
                                tab[j] = t;
                            }
        
                        }
                    }
                    for (int i = 0; i < 10; i++)
                    {
                        Console.WriteLine(tab[i]);
                    }
                }
                static void TriTabDecroissant()
                {
                    Console.WriteLine("Triage du tableau dans l'ordre décroissant");
                    int t;
                    //Triage du tableau
                    for (int i = 0; i < 9; i++)
                    {
                        for (int j = 0; j < 10 - 1; j++)
                        {
        
                            if (tab[j] < tab[j + 1])
                            {
                                t = tab[j + 1];
                                tab[j + 1] = tab[j];
                                tab[j] = t;
                            }
        
                        }
                    }
                    for (int i = 0; i < 10; i++)
                    {
                        Console.WriteLine(tab[i]);
                    }
                }
            }
        }
        





    Abonnez vous à notre chaîne YouTube gratuitement