From 84653df183c212b10023dd43546b8d83bb919799 Mon Sep 17 00:00:00 2001 From: ergz Date: Sat, 29 Jul 2023 23:28:19 -0700 Subject: [PATCH] implement binary search --- c/binary-search.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 c/binary-search.c diff --git a/c/binary-search.c b/c/binary-search.c new file mode 100644 index 0000000..e2f85d2 --- /dev/null +++ b/c/binary-search.c @@ -0,0 +1,38 @@ +#include +#include + +bool binary_search(int *arr, int len, int val) { + int lo_bound = 0; + int hi_bound = len - 1; + + int mid_index; + int mid_val; + + int counter = 1; + + while (lo_bound <= hi_bound) { + mid_index = (hi_bound + lo_bound) / 2; + + mid_val = arr[mid_index]; + + if (mid_val == val) { + return (true); + } + + if (val < mid_val) { + hi_bound = mid_index - 1; + } else { + lo_bound = mid_index + 1; + } + + counter++; + } + printf("total iterations: %d\n", counter); + return (false); +} + +int main() { + int arr[8] = {1, 3, 4, 5, 6, 7, 8, 11}; + bool result = binary_search(arr, 8, 11); + printf("the result is %s\n", result ? "true" : "false"); +} \ No newline at end of file