Source Code in C
1: Binary Search 2: #include <stdio.h>
3: #include <stdlib.h> 4: void dyadiki_anazitisi_2(int pinakas[],int arxi,int telos,int arithmos,int *plithos_sygriseon,int *thesi_pinaka,int *vrethike);
5: int main() 6: {
7: int max; 8: int arxi;
9: int telos; 10: int k;
11: int i; 12: int *x;
13: int plithos; 14: int thesi;
15: int vrethike; 16: printf("dose to megethos tou pinaka:");
17: scanf("%d",&max); 18: x=(int*)malloc(max*sizeof(int));
19: printf("dose ta stoixeia tou taksinomimenou pinaka:\n"); 20: i=0;
21: while(i<max) 22: {
23: printf("\nx[%d]=",i); 24: scanf("%d",&x[i]);
25: i++; 26: }
27: printf("dose enan arithmo:"); 28: scanf("%d",&k);
29: plithos=0; 30: thesi=0;
31: telos=max-1; 32: dyadiki_anazitisi_2(x,arxi,telos,k,&plithos,&thesi,&vrethike);
33: if(vrethike!=0) 34: {
35: printf("o arithmos yparxei ston pinaka"); 36: printf("\no arithmos yparxei stin thesi %d",thesi);
37: printf("\nto plithos sygriseon pou eginan einai:%d",plithos); 38: }
39: if(vrethike==0) 40: {
41: printf("o arithmos den brethike"); 42: printf("\nto plithos sygriseon pou eginan einai:%d",plithos);
43: } 44: return 0;
45: } 46:
47: /*Synartisi anadromikis dyadikis anazitisis*/ 48:
49: void dyadiki_anazitisi_2(int pinakas[],int arxi,int telos,int arithmos,int *plithos_sygriseon,int *thesi_pinaka,int *vrethike) 50: {
51: int mesaio; 52: *vrethike=0;
53: 54: if((arxi<=telos) && (*vrethike==0))
55: { 56: mesaio=(arxi+telos)/2;
57: (*plithos_sygriseon)++; 58: if(arithmos==pinakas[mesaio])
59: { 60: *vrethike=1; /*Brethike to stoixeio*/
61: *thesi_pinaka=mesaio; 62: }
63: else /*Den brethike*/ 64: if(arithmos<pinakas[mesaio])
65: { 66: dyadiki_anazitisi_2(pinakas,arxi,mesaio-1,arithmos,plithos_sygriseon,thesi_pinaka,vrethike);
67: } 68: else /*arithmos>=pinakas[stoixeio]*/
69: { 70: dyadiki_anazitisi_2(pinakas,mesaio+1,telos,arithmos,plithos_sygriseon,thesi_pinaka,vrethike);
71: } 72: }
73: 74: }