Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Algorithme de recherche dichotomique

0/5 (41 avis)

Vue 38 958 fois - Téléchargée 370 fois

Description

Bonjour,

Voila, beaucoup sur ce site cherche souvent des méthodes pour recherche une variable dans un tableau ou autre. Je me susi dit pourquoi pas mettre cet algorithme bien pratique et surtout TRES éfficace; Ici il est programmer pour la recherche d'un entier dans un tableau. La fonction de test est aussi programée. Il n'y a pas de commentaire car le code est simple. Mais si il y à quand mm des questions, n'hésité pas.

++All

Source / Exemple :


#include "entete.h"

int rechDich (int D_intt[], int D_intvaleurRecherchee, int D_intborneInf, int D_intborneSup)
{
	
	int D_intmilieu; /* milieu */
	/*int x; valeur de la borne du milieu (facultatif) */

	if (D_intborneSup<D_intborneInf)
	{
		return -1;
	}
	else
	{
		D_intmilieu = ((D_intborneInf + D_intborneSup)/2);
		/*x = t[milieu]; (facultatif)*/
			if (D_intvaleurRecherchee==D_intt[D_intmilieu])
			{
				return D_intmilieu;
			}

			else 
			{
				if (D_intvaleurRecherchee<D_intt[D_intmilieu])
				{
					return(rechDich(D_intt,D_intvaleurRecherchee,D_intborneInf,D_intmilieu-1));
				}
				else
				{	
					return(rechDich(D_intt,D_intvaleurRecherchee,D_intmilieu+1, D_intborneSup));
				}

			}
	}
}

void main()
{
	
	short int D_intchoix = -1, test = 0;
	int D_intt[15]={-2,0,1,2,5,9,11,45,56,100,101,205,236,360,1001};
	int D_intborneInf = 0;
	int D_intborneSup =14;
	int D_intvaleurRecherchee;
	char D_chrep='o';

	do
	{
		D_intborneSup = 14;
		clrscr();
		textcolor(4);
		cprintf("\n Tableau paire ou impaire? (1/2) :");scanf ("%d", &D_intchoix);
      if (D_intchoix==2)
      {
      	D_intborneSup -= 1;
      }
      if (D_intchoix <= 2)
      {
      	textcolor(4);
         cprintf("\nintroduisez une valeur a rechercher :"); scanf ("%d",&D_intvaleurRecherchee);
         if (rechDich (D_intt,D_intvaleurRecherchee,D_intborneInf,D_intborneSup) == -1)
         {
         	textcolor(1);
            cprintf("\n\n\t\a !! La valeur ne se trouve pas dans le tableau !!");
         }
         else
         {
         	textcolor(2);
            printf("\n\n\tindice de la valeur dans le tableau : %d" , rechDich(D_intt,D_intvaleurRecherchee,D_intborneInf,D_intborneSup));
         }
			textcolor(4);
			fflush(stdin);
			printf("\n\n voulez-vous introduire une nouvelle valeur? (o/n) :");scanf("%c", &D_chrep);
      }
      else
      {
			textcolor(1);
			cprintf("\n\t!! vous avez introduit un choix non conforme !!");
			getch();
			D_chrep='o';
      }

	}while (D_chrep=='o');
}

Conclusion :


Ya t-il des questions? ;)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.