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