Solution de la recherche dichotomique en C [Résolu/Fermé]

Signaler
Messages postés
146
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
8 janvier 2013
-
 FOX -
Bonjour,
Est-ce quelqu'un peut m'expliquer comment faire une recherche dichotomique d'une valeur dans un tableau d'entier par récursivité en langage C
merci

9 réponses

Bonjour,
Je suis encore Dr.SoFtNaF, il désormait qu'il y a un problème avec le forum, je peux pas m'identifier, ban volà le code source en C

#include<stdio.h>
/* Programme de recherche dichotomique d'un élément dans une liste d'entiers */
int main(){
/* DECLARATION DES VARIABLES */
int iTableau[]={1,2,3,5,6,8,9}; /* Tableau TRIE d’entiers */
int iRecherche; /* Elément recherché */
int iPremier; /* Indice du premier élément du sous-tableau analysé */
int iDernier; /* Indice du dernier élément du sous-tableau analysé */
int iMilieu; /* Indice de l'élément du milieu du sous-tableau analysé */
int iTrouve; /* Booléen indiquant si l'élément est trouvé */
int iFin=1; /* Indication de fin de saisie (0=fin) */
/* Tant que l'utilisateur souhaite faire des recherches */
while(iFin)
{
   printf("Quel élément recherchez-vous ? ");
   scanf("%d",&iRecherche);
  /* Initialisation des variables*/
   iPremier=0;
   iDernier=6;
   iTrouve=0;
   /* Tant qu'on a pas trouve l'élément recherché ou que le sous-tableau */
   /* contient plus de 1 élément */
   while((iPremier <= iDernier)&&(iTrouve==0))
      {
       /* Calcul de la position de l'élément du milieu */
           iMilieu=(iPremier+iDernier)/2;
      /* Si l'élément du milieu est l'élément recherché */
           if(iTableau[iMilieu]==iRecherche) iTrouve =1;
           else
                 {
                 /* Si la valeur recherchée est plus petite */
                 /* que la valeur du l'élément du milieu */
                 /* Alors on regarde le sous-tableau de gauche */
                 if(iTableau[iMilieu]>iRecherche) iDernier = iMilieu -1;
                   /* sinon on regarde le sous-tableau de droite*/
                 else iPremier = iMilieu +1;
                 }
          }
          if(!iTrouve) printf("Cette valeur n'appartient pas à la liste\n");
           else printf("Cette valeur appartient à la liste\n");
         printf("Voulez-vous continuer ? (Taper 0 pour sortir du programme) : ");
            scanf("%d",&iFin);
        /* Si l'utilisateur ne saisait pas un nombre, on sort du programme */
         if(!isalpha(iFin)) iFin=0;

          /* reprise d'une recherche */
        iTrouve=0;
    } /* Fin du while */
   } /* Fin du main */


Bonne continuation

Dr.SoFtNaF
10
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

excellent algorithme
Messages postés
146
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
8 janvier 2013
23
mais le problème c'est que j'ai pas pu bien comprendre le cours de récursivité :( si quelqu'un peut m'aider à trouver un cours sur la récursivité bien expliqué
merci
Messages postés
29822
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 octobre 2020
6 847
salut

voila un exemple à étudier , decortiquer : http://www.enseignement.polytechnique.fr/profs/informatique/Jean-Jacques.Levy/poly/main1/node15.html

mais avant de reprendre texto le prog pour répondre à un exercice de cours, tu as intéret à bien le comprendre, car cela est réalisé par un bon, un prof de l'ecole polytechnique

cdt
Bonjour,
Encore une autre chose, la deusième partie dans le message, la récursivité en C/C++

tiens ce lien, c fabuleux ici
https://franckh.developpez.com/tutoriels/c-ansi/recursivite/

Cordialement
Dr.SoFtNaF
Messages postés
29822
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
19 octobre 2020
6 847
En informatique et en logique, une fonction ou plus généralement un algorithme qui contient un appel à elle-même est dite récursive

Et tout sur la récursivité : http://www.chambily.com/recursivite/
Messages postés
146
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
8 janvier 2013
23
merci beaucoup
Messages postés
146
Date d'inscription
dimanche 25 mars 2007
Statut
Membre
Dernière intervention
8 janvier 2013
23
merci pour votre aide
merci beaucoup
merci bocou ca va m aider XD
Messages postés
21
Date d'inscription
vendredi 22 décembre 2006
Statut
Membre
Dernière intervention
19 octobre 2010
30
Bonsoir,

wow une vielle topique qui s'ouvre après 3 ans, c'est bien de garder nos traces quand on partage ce genre des codes sources.

et bonne courage Denshi.


Cordialement Votre,

Dr.SoFtNaF