Binary search:
Binary search is less time taking than linear search as it starts in the middle of a sorted array, and determines on which side the value is.
Steps for binary search algorithm:
- Firstly before applying direct searching on array, we have to sort the array. for sorting algorithm you can refer this link as: http://www.stepbystepjava.com/2018/04/26/bubble-sort-in-c
- let suppose we have an “array arr “arr[6] = { 1, 4, 3, 2, 8, 7 } and want to search element 7 in array;
- now sort this array by any sorting algorithm or follow above link for sorting. After sorting this it will be like {1,2,3,4,7,8}. apply binary search algorithm on it.
- Find mid index of array arr:
mid = (start index + end index) /2
- check for the element at mid index in array arr:
if(arr[mid] == element )
- check if element is greater than arr[mid] element then
start index = mid -1 otherwise end index = mid +1
- go to step 4 until beg is greater than end.
Here in this program, I am assuming that my array is already sorted so applying binary search on it directly.
Program :
#include <stdio.h> #include <conio.h> int main() { int arr[5], i,element,mid,beg,end,flag=0; printf("Enter elements for array."); for(int i=0; i<5; i++){ scanf("%d", &arr[i]); } printf("enter a element that you want to search"); scanf("%d", &element); //code for binary search beg = 0; end = 4; while(beg <=end && element != arr[mid]) { mid = (beg + end)/2; if(element == arr[mid]){ printf("element %d found at %d", arr[mid], mid); flag = flag + 1; } else if(element < arr[mid]){ end = mid-1; } else{ beg = mid + 1; } } if(flag == 0){ printf("item not found"); } return 0; }
Output: