diff --git a/Searches/BinarySearch.c b/Searches/BinarySearch.c new file mode 100644 index 00000000..4a0d7cc3 --- /dev/null +++ b/Searches/BinarySearch.c @@ -0,0 +1,39 @@ +#include + +// Recursive Function- It returns location of x assumiung array arr[l..r] is present, otherwise -1 + +int binarysearch(int arr[], int l, int r, int x) +{ + if (r >= l) + { + int mid = l + (r - l)/2; + + // If element is present at middle + if (arr[mid] == x) return mid; + + // If element is smaller than middle + if (arr[mid] > x) return binarysearch(arr, l, mid-1, x); + + // Else element is in right subarray + return binarysearch(arr, mid+1, r, x); + } + + // When element is not present in array + return -1; +} + +int main(void) +{ + // give function an array to work with + int arr[] = {2, 3, 4, 10, 40}; + // get size of array + int n = sizeof(arr)/ sizeof(arr[0]); + //set value to look for + int x = 10; + // set result to what is returned from binarysearch + int result = binarysearch(arr, 0, n-1, x); + // print out result + (result == -1)? printf("Element is not in the array") + : printf("Element is present at index %d", result); + return 0; +}