summary refs log tree commit diff stats
path: root/c/binary-search/binary_search.c
diff options
context:
space:
mode:
authorAndinus <andinus@nand.sh>2021-09-05 16:38:19 +0530
committerAndinus <andinus@nand.sh>2021-09-05 16:38:19 +0530
commitb05021bb9ca6bc6f5189bfe8f2cf15e0a78fdb5e (patch)
tree027c337d0878cafe364ef13146c738dfa9f97644 /c/binary-search/binary_search.c
parent46d81156b7bad4bef2f4443df6e9df4f03303c56 (diff)
downloadexercism-b05021bb9ca6bc6f5189bfe8f2cf15e0a78fdb5e.tar.gz
C: Binary Search: Add solution
Diffstat (limited to 'c/binary-search/binary_search.c')
-rw-r--r--c/binary-search/binary_search.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/c/binary-search/binary_search.c b/c/binary-search/binary_search.c
new file mode 100644
index 0000000..fe122d4
--- /dev/null
+++ b/c/binary-search/binary_search.c
@@ -0,0 +1,16 @@
+#include "binary_search.h"
+
+const int *binary_search(int value, const int *arr, size_t length) {
+    size_t left = 0, right = length;
+    while (left < right) {
+        size_t mid = left + (right - left) / 2;
+
+        if (arr[mid] < value)
+            left = mid + 1;
+        else if (arr[mid] > value)
+            right = mid;
+        else
+            return &arr[mid];
+    }
+    return NULL;
+}