diff options
author | sinanmohd <pcmsinan@gmail.com> | 2022-06-04 12:11:15 +0530 |
---|---|---|
committer | sinanmohd <pcmsinan@gmail.com> | 2022-06-04 12:11:15 +0530 |
commit | c24973af02bc33f2f5f25d37e22ca91da5de3c47 (patch) | |
tree | 460a005b6a3a9a967bd881bc2bf01e0becbe33cc /3.1.c |
inital commit
Diffstat (limited to '3.1.c')
-rw-r--r-- | 3.1.c | 56 |
1 files changed, 56 insertions, 0 deletions
@@ -0,0 +1,56 @@ +#include <stdio.h> + +int binsearch(int x, int v[], int n); +int binsearch2(int x, int v[], int n); + +int +main(void) +{ + int v[10]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 11}; + printf("%d\n", binsearch(v[5], v, 10)); +} + +int +binsearch(int x, int v[], int n) +{ + int low, high, mid; + + low = 0; + high = n-1; + + while (low <= high) { + mid = (low+high)/2; + + if (x < v[mid]) + high = mid - 1; + else if (x > v[mid]) + low = mid + 1; + else + return mid; + } + + return -1; +} + +int +binsearch2(int x, int v[], int n) +{ + int low, high, mid; + + low = 0; + high = n-1; + + while (low < high) { + mid = (low+high)/2; + + if (x <= v[mid]) + high = mid; + else + low = mid+1; + + } + + /* here low == high */ + + return (x == v[low]) ? low : -1; +} |