Recherche par dichotomie d’un élément dans une table classée soit une table contenant des prénoms, classés par ordre alphabétique. Nous désirons chercher l’indice de la case de la table où se trouve le prénom, si il s’y trouve. Pour cela, nous utiliserons la méthode de dichotomie (voir ci-dessous la méthode)
Donnez l’algorithme de la procédure qui recherche, par dichotomie le numéro du prénom recherché ou zéro s’il n’y est pas :
Principe de la recherche par dichotomie :
- Les prénoms sont classés par ordre alphabétique
- On connaît le nombre d’éléments de la table
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Exercice_tableau_7_dichotomie
{
class Program
{
static void Main(string[] args)
{
//debut
//declaration
string[] tprenom = new string[] { "agathe", "berthe", "chloé", "cunégonde", "olga", "raymonde", "sidonie" };
int median, rang, imin = 0, imax;
string prenom;
rang = tprenom.Length;
bool fin = false;
//saisie
Console.WriteLine("Saisir le prénom à rechercher !\n");
prenom = Console.ReadLine();
//traitement
imax = tprenom.Length - 1;
median = ((imax - imin) / 2 + imin);
while ((fin == false) && (imin != imax))
{
if (prenom == tprenom[median])
{
Console.WriteLine("Le rand du prénom que vous recherchez est :" + rang);
rang = (median + 1);
fin = true;
}
else if (prenom.CompareTo(tprenom[median]) < 0)
{
imax = median - 1;
}
else if (prenom.CompareTo(tprenom[median]) > 0)
{
imin = median + 1;
}
median = ((imax - imin) / 2) + imin;
}
Console.WriteLine("Attention, le prénom que vous cherchez n'existe pas dans la base de données\nErreur, vous êtes sortis de la boucle");
Console.ReadKey();
//resultat
//fin
}
}
}
Flux RSS Clogique.com