Algorithme : Recherche Dichotomique – C#

Cet algorithme effectue une recherche dichotomique dans un tableau trié au préalable.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication24
{
    class Program
    {
        static void Main(string[] args)
        {
            string n;
            int temp, i, j, posmax, nbelement, deb, mil, fin;

            Console.WriteLine("Entrez le nombre d'éléments souhaité");
            n = Console.ReadLine();
            nbelement = Convert.ToInt32(n);
            deb = 0;
            fin = nbelement - 1;
            int[] tab = new int[nbelement];
            Random has = new Random(10);
            i = nbelement - 1;
            for (int x = 0; x < tab.Length; x++)
            {
                tab[x] = has.Next(0, 10);
            }
            while (i > 0)
            {
                posmax = 0;
                j = 0;
                while (j <= i)
                {
                    if (tab[j] > tab[posmax])
                    {
                        posmax = j;
                    }
                    j = j + 1;
                }
                if (posmax != i)
                {
                    temp = tab[posmax];
                    tab[posmax] = tab[i];
                    tab[i] = temp;
                }
                Console.WriteLine(tab[i]);
                i = i - 1;
            }
            Console.WriteLine(tab[i]);
            Console.WriteLine("Element recherché : ");
            string e1 = Console.ReadLine();
            int e = Convert.ToInt32(e1);
            int pos;

            while (deb != fin)
            {
                mil = (deb + fin) / 2;
                if (tab[mil] >= e)
                {
                    fin = mil;
                }
                else
                {
                    deb = mil + 1;
                }
                
            }
            if (tab[deb] == e)
            {
                pos = deb;

            }
            else
            {
                pos = -1;
            }

            if (pos != -1)
            {
                Console.WriteLine(pos);
            }
            else
            {
                Console.WriteLine(e + "ne figure pas dans le tableau");
            }
            Console.ReadLine();
        }

    }
}

 

Laisser un commentaire