Example d’algorithme simple
Tri dichotomique:
/* fonction de recherche dichotomique qui renvoie un indice où se trouve la valeur "val" si elle est dans le tableau "tab[]" et -1 si cette valeur n'y est pas */
int rechercheDicho(int tab[], int nbVal, int val){
/* déclaration des variables locales à la fonction */
bool trouve; //vaut faux tant que la valeur "val" n'aura pas été trouvée
int id; //indice de début
int ifin; //indice de fin
int im; //indice de "milieu"
/* initialisation de ces variables avant la boucle de recherche */
trouve = false; //la valeur n'a pas encore été trouvée
id = 0; //intervalle de recherche compris entre 0...
ifin = nbVal; //...et nbVal
/* boucle de recherche */
while(!trouve && ((ifin - id) > 1)){
im = (id + ifin)/2; //on détermine l'indice de milieu
trouve = (tab[im] == val); //on regarde si la valeur recherchée est à cet indice
if(tab[im] > val) ifin = im; //si la valeur qui est à la case "im" est supérieure à la valeur recherchée, l'indice de fin "ifin" < < devient >> l'indice de milieu, ainsi l'intervalle de recherche est restreint lors du prochain tour de boucle
else id = im; //sinon l'indice de début < < devient >> l'indice de milieu et l'intervalle est de la même façon restreint
}
/* test conditionnant la valeur que la fonction va renvoyer */
if(tab[id] == val) return(id); //si on a trouvé la bonne valeur, on retourne l'indice
else return(-1); //sinon on retourne -1
}
| Print article | This entry was posted by Keven M. on December 15, 2008 at 1:22 am, and is filed under Uncategorized. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |