1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#include<stdio.h> // pour les fonctions d'entrée/sortie
#include<math.h>
#define TAILLE 5
#define DEBUG 0
main()
{
int i, indice;
int t_6[] = {1, 4, 6, 8, 9};
indice=tab_get_indice_insert(t_6, 9, 0, 4);
printf ("\n l'infide est: %d\t\n",indice);
}
// recherche dichotomique
// moins complexe que la premiére car si le tableau et grand en gagne du temps
int tab_get_indice_insert(int t[], int val, int ind_deb, int ind_fin)
{
int ind_mil= (ind_deb+ind_fin)/2;
/*if(val = t[ind_mil])
{
//printf("ind_mil=%d \t",ind_mil);
return ind_mil;
}
*/
// if(val != t[ind_mil]) //val != t[ind_mil]
// {
if(val<=t[ind_mil]) {
if(ind_fin-ind_mil==0) {printf("\trani fi %d <= %d ind_mil=%d\n",val,t[ind_mil],ind_mil);return (ind_mil);}
else {printf("\trani fi %d <= %d ind_mil=%d \n",val,t[ind_mil],ind_mil);tab_get_indice_insert(t,val,ind_deb,ind_mil);}}
/*{printf("rani fi val < t[ind_mil]");
if (ind_mil-ind_deb==1) {//printf("ind_mil=%d \t",ind_mil);
return ind_mil;
}
tab_get_indice_insert(t,val,ind_deb,ind_mil);
*/
else { //val > t[ind_mil]
//printf("je suis la val > t[ind_mil]");
if ((ind_fin-ind_mil==1)||(ind_fin-ind_mil==0)) {printf("\tje suis la %d > %d ind_mil=%d \n",val,t[ind_mil],ind_mil+1);
return (ind_mil+1);
}
else {printf("\tje suis la %d > %d ind_mil=%d \n",val,t[ind_mil],ind_mil);tab_get_indice_insert(t,val,ind_mil,ind_fin);}
}
// }
// if (DEBUG)
// printf("tab_get_indice_insert ind_fin = %d\tindice = %d\n", ind_fin, i);
} |
Partager