0
2.5kviews
Write a program to search an element in array using binary search.
1 Answer
0
59views
// program to search element using binary search

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define size 10 // Added to make changing size of array easier
int smallest(int arr[], int k, int n); // Added to sort array
void selection_sort(int arr[], int n); // Added to sort array

int main(int argc, char *argv[])
{
int arr[size], num, i, n, beg, end, mid, found=0;
printf("\n Enter the number of elements in the array: ");
scanf("%d", &n);
printf("\n Enter the elements: ");
for(i=0;i<n;i++)
{
scanf("%d", &arr[i]);
}
selection_sort(arr, n); // Added to sort the array
printf("\n The sorted array is: \n");
for(i=0;i<n;i++)
printf(" %d\t", arr[i]);
printf("\n\n Enter the number that has to be searched: ");
scanf("%d", &num);
beg = 0, end = n-1;
while(beg<=end)
{
 mid = (beg + end)/2;
 if (arr[mid] == num)
 {
 printf("\n %d is present in the array at position %d", num, mid+1);
  found =1;
 break;
  }
 else if (arr[mid]>num)
 end = mid-1;
 else
  beg = mid+1;
  }
  if (beg > end && found == 0)
  printf("\n %d does not exist in the array", num);
  return 0;
  }
 int smallest(int arr[], int k, int n)
 {
 int pos = k, small=arr[k], i;
 for(i=k+1;i<n;i++)
 {
 if(arr[i]< small)
 {
 small = arr[i];
  pos = i;
 }
 }
 return pos;
 }
 void selection_sort(int arr[],int n)
 {
int k, pos, temp;
for(k=0;k<n;k++)
 {
pos = smallest(arr, k, n);
temp = arr[k];
arr[k] = arr[pos];
arr[pos] = temp;
}
}
Please log in to add an answer.