aboutsummaryrefslogtreecommitdiff
path: root/3.1.c
diff options
context:
space:
mode:
authorsinanmohd <pcmsinan@gmail.com>2022-06-04 12:11:15 +0530
committersinanmohd <pcmsinan@gmail.com>2022-06-04 12:11:15 +0530
commitc24973af02bc33f2f5f25d37e22ca91da5de3c47 (patch)
tree460a005b6a3a9a967bd881bc2bf01e0becbe33cc /3.1.c
inital commit
Diffstat (limited to '3.1.c')
-rw-r--r--3.1.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/3.1.c b/3.1.c
new file mode 100644
index 0000000..25e2ca1
--- /dev/null
+++ b/3.1.c
@@ -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;
+}