Search a number using binary search - C

C program to search a number in sorted array using binary search.

Solution:

  • Binary search is only applicable on the sorted array.
  • In this program, we take 'n' numbers as an input from the user & sort all numbers in ascending order using any sorting technique.
  • In this program we use a bubble sort technique and after sorting the elements in ascending order, use binary search technique to search an element.

#include<stdio.h>
int main()
{
      int c, first, last, middle, n, search, array[100],t,i,j;
      printf(" How many numbers you want to enter?: ");
      scanf("%d",&n);
      printf("\n Enter %d numbers: \n\n  ", n);
      for (c = 0; c < n; c++)
            scanf("%d",&array[c]);
      //buuble sort starts
      for (i = 0; i < n; i++)
      {
            for (j = 0; j < (n - i - 1); j++)
            {
                  if (array[j] > array[j + 1])
                  {
                        t = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = t;
                  }
            }
      }
      printf("\nSorted array is : \n\n");
      for (i = 0; i < n; i++)
      {
            printf("%d ", array[i]);
      }
      printf("\n\nEnter number to be searched: ");
      scanf("%d", &search);
      // Binary search begins
      first = 0;
      last = n - 1;
      middle = (first+last)/2;
      while (first <= last)
      {
            if (array[middle] < search)
                  first = middle + 1;    
            else if (array[middle] == search)
            {
                  printf("\n%d found at location %d.\n", search, middle+1);
                  break;
            }
            else
                  last = middle - 1;
            middle = (first + last)/2;
      }
      if (first > last)
            printf("\nNot found!! %d is not present in the list.\n", search);
      return 0;
}


Output:

search number