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