Binary Search
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: }





























