Saturday 19 March 2016

Implementation of Binary Search


Write a C program to implement Binary Search Algorithm.

Include a function
int BinarySearch (int, int, int *, int x) --- The 1st parameter is the lower limit of the list or array, the 2nd parameter is the upper limit of the list or array, the third parameter is a pointer to the array and the fourth parameter is the search element. 

Please note that the index of the search element is returned by the function. If the search element is not present in the array, -1 is returned. 
Assume that the maximum size of the array is 10 . Please note that if a is the array, then a[0] is in position 0, a[1] is in position 1 ... 

Input and Output Format: 
Refer sample input and output for formatting specifications.

Sample Input and Output 1:
[All text in bold corresponds to input and the rest corresponds to output.]
Enter the number of elements :
5
Enter the elements :
12
16
23
45
67
Enter the element to be searched :
23
The element 23 is in position 2

Sample Input and Output 2: 
[All text in bold corresponds to input and the rest corresponds to output.]
Enter the number of elements :
5
Enter the elements :
12
16
23
45
67
Enter the element to be searched :
28
The element 28 is not present in the array

Code:

  #include<stdio.h>
int BinarySearch(int, int ,int *, int);
int main(){
  int first=0, last; 
  int a[20],search,s=0,n,i;
  //int j,temp=0;
  printf("Enter the number of elements :\n");
  scanf("%d",&n);
  printf("Enter the elements :\n");
  for(i=0;i<n;i++)
  {
    scanf("%d",&a[i]);
  }
  printf("Enter the element to be searched :\n");
  scanf("%d",&search);
  last=n-1;
  
  s=BinarySearch(first, last, a, search);
  if(s>0){
  printf("The element %d is in position %d",search,s);
  }
  else{
  printf("The element %d is not present in the array",search);
  }
  return 0;
}

int BinarySearch(int l, int h, int *a, int x)
{
  int mid;
  while(l<=h){
    mid=(l+h)/2;
    if (x==a[mid])
      return mid;
  else if(x<a[mid])
    h=mid-1;
  else if(x>a[mid])
    l=mid+1;
    }
return -1;
}

No comments:

Post a Comment