Advertisement
Guest User

IS4U

a guest
Dec 2nd, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.67 KB | None | 0 0
  1.         public Form1()
  2.         {
  3.             InitializeComponent();
  4.         }
  5.  
  6.         private void mnuTrier_Click(object sender, EventArgs e)
  7.         {
  8.             TriRap(0, lstintinfo.Count - 1);
  9.             SetItems(); //éfface les items du listbox et appel setitems
  10.         }
  11.  
  12.         private bool blnEstTrié(int q) //méthode récursive pour vérifier si tableau est trier
  13.         {
  14.             if (lstintinfo.Count == q + 1) //si le count = q (ou pour quand c'est fini de sortir les items car q++ est arriver jusqu'à c'est fini)
  15.             {
  16.                 return true; //cest trier
  17.             }
  18.             else
  19.             {
  20.                 if (lstintinfo[q] <= lstintinfo[q + 1])
  21.                 {
  22.                     return blnEstTrié(q + 1); //récursive mais avec q + 1
  23.                 }
  24.                 else
  25.                 {
  26.                     return false; //false car c'est pas trier
  27.                 }
  28.             }
  29.             //for (int q = 0; q < lstintinfo.Count - 1; q++)
  30.             //{
  31.             //    if (
  32.             //}
  33.         }
  34.  
  35.  
  36.         private long RechercheBin(int déb, int fin, int X) //add commentaires
  37.         {
  38.             if (lstintinfo.Count == 1)
  39.             {
  40.                 return 0;
  41.             }
  42.             else if(X > lstintinfo[lstintinfo.Count - 1])
  43.             {
  44.                 return lstintinfo.Count - 1;
  45.             }
  46.             else if (X < lstintinfo[0])
  47.             {
  48.                 return 0;
  49.             }
  50.             else if (X > lstintinfo[(déb + fin) / 2])
  51.             {
  52.                 return RechercheBin((déb + fin) / 2, fin, X);
  53.             }
  54.             else if (X < lstintinfo[(déb + fin) / 2])
  55.             {
  56.                 return RechercheBin(déb, (déb + fin) / 2, X);
  57.             }
  58.             else
  59.             {
  60.                 if (X == lstintinfo[(déb + fin) / 2])
  61.                 {
  62.                     return (déb + fin) / 2 + 1;
  63.                 }
  64.                 else
  65.                 {
  66.                     return RechercheBin(déb++, fin--, X);
  67.                 }
  68.                 /*if (X == lstintinfo[déb + 1])
  69.                 {
  70.                     return déb + 2;
  71.                 }
  72.                 else if (X == lstintinfo[fin])
  73.                 {
  74.                     return fin + 1;
  75.                 }
  76.                 else if (X == lstintinfo[déb])
  77.                 {
  78.                     return déb + 1;
  79.                 }
  80.                 else if (X == lstintinfo[fin - 1])
  81.                 {
  82.                     return fin;
  83.                 }
  84.                 else if (X == lstintinfo[fin - 2])
  85.                 {
  86.                     return fin - 1;
  87.                 }
  88.                 else if (X == lstintinfo[fin - 3])
  89.                 {
  90.                     return fin - 2;
  91.                 }
  92.                 else if (X == lstintinfo[fin - 4])
  93.                 {
  94.                     return fin - 3;
  95.                 }
  96.                 else if (X == lstintinfo[fin - 5])
  97.                 {
  98.                     return fin - 4;
  99.                 }
  100.                 else if (X == lstintinfo[déb + 2])
  101.                 {
  102.                     return déb + 3;
  103.                 }
  104.                 /*else if (X == lstintinfo[déb - 1])
  105.                 {
  106.                     return déb;
  107.                 }
  108.                 else if (X == lstintinfo[fin + 1])
  109.                 {
  110.                     return fin + 2;
  111.                 }
  112.  
  113.                 else
  114.                 {
  115.                
  116.                 }*/
  117.             }
  118.         }
  119.  
  120.        
  121.         private void TriRap(int déb, int fin)
  122.         {
  123.             if (blnEstTrié(0))
  124.             {
  125.                 return; //blnEstTrié cherche si c'est trié, donc si c'est vrai c'est déja trier
  126.             }
  127.             else
  128.             {
  129.                 //indG est l'indexe de gauche, indD est l'indexe de droite
  130.                 int pivot = déb;
  131.                 int indG = déb;
  132.                 int indD = fin;
  133.                 int temp = 0;
  134.                 do
  135.                 {
  136.                     //échange les deux parties de list, lstintinfo[indg] et lstintinfo[d]
  137.                     if (lstintinfo[indG] >= lstintinfo[indD])
  138.                     {
  139.                         temp = lstintinfo[indG];
  140.                         lstintinfo[indG] = lstintinfo[indD];
  141.                         lstintinfo[indD] = temp;
  142.                         //si pivot = indG alors pivot = indD,
  143.                         //si pivot = indD alors pivot = indG
  144.                         pivot = indG + indD - pivot;
  145.                     }
  146.                     if (pivot == indG)
  147.                     {
  148.                         indD--; //indD - 1, décrémente indD
  149.                     }
  150.                     else
  151.                     {
  152.                         indG++; //indG + 1, incrémente indG
  153.                     }
  154.                 }
  155.  
  156.                 while ((indG != indD));
  157.  
  158.                 if (déb < indG - 1)
  159.                 {
  160.                     //appel récursif sur la partie gauche
  161.                     TriRap(déb, indG - 1);
  162.                 }
  163.  
  164.                 if (fin > indD + 1)
  165.                 {
  166.                     //appel récursif sur la partie droite
  167.                     TriRap(indD + 1, fin);
  168.                 }
  169.             }
  170.         }
  171.  
  172.         List<int> lstintinfo = new List<int>();
  173.  
  174.         Random rndmint = new Random();
  175.  
  176.         private void Form1_Load(object sender, EventArgs e)
  177.         {
  178.             for (int l = 0; l < 45; l++) //loop pour crée le list
  179.             {
  180.                 lstintinfo.Add(rndmint.Next(300)); //list qui contient l'information
  181.                 lstDonnées.Items.Add(lstintinfo[l]); //listbox que l'utilisateur voit
  182.             }
  183.         }
  184.  
  185.         private void SetItems()
  186.         {
  187.             lstDonnées.Items.Clear(); //éfface tous les items du list
  188.  
  189.             for (int w = 0; w < lstintinfo.Count - 1; w++)
  190.             {
  191.                 lstDonnées.Items.Add(lstintinfo[w]); //ajoute les items de lstintinfo qui est trier
  192.             }
  193.         }
  194.  
  195.         private void mnuRedémare_Click(object sender, EventArgs e)
  196.         {
  197.             lstDonnées.Items.Clear(); //éfface tous les items du list
  198.             lstintinfo.Clear();
  199.  
  200.             for (int l = 0; l < 45; l++)
  201.             {
  202.                 lstintinfo.Add(rndmint.Next(300));
  203.                 lstDonnées.Items.Add(lstintinfo[l]);
  204.             }
  205.         }
  206.  
  207.         private void mnuRechercheBin_Click(object sender, EventArgs e)
  208.         {
  209.             MessageBox.Show("Votre nombre se trouve au rang " + Convert.ToString(RechercheBin(0, lstintinfo.Count -1, Convert.ToInt32(txtRechercheX.Text))));
  210.         }
  211.  
  212.  
  213.     }
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement