diff options
author | Andinus <andinus@nand.sh> | 2021-09-05 16:38:19 +0530 |
---|---|---|
committer | Andinus <andinus@nand.sh> | 2021-09-05 16:38:19 +0530 |
commit | b05021bb9ca6bc6f5189bfe8f2cf15e0a78fdb5e (patch) | |
tree | 027c337d0878cafe364ef13146c738dfa9f97644 /c/binary-search/binary_search.c | |
parent | 46d81156b7bad4bef2f4443df6e9df4f03303c56 (diff) | |
download | exercism-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.c | 16 |
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; +} |