#include <stdio.h>
int binary_search(int arr[], int length, int target) {
int low = 0;
int high = length - 1;
int mid;
while (low <= high) {
mid = (low + high) / 2;
if (target < arr[mid]) {
high = mid - 1;
} else if (target > arr[mid]) {
low = mid + 1;
} else {
// target must equal arr[mid]
return mid;
}
}
return -1;
}
int main(void) {
int arr[] = { 1, 3, 7, 8, 10, 45, 67 };
printf("%d", binary_search
(arr
, 5, 3)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgYmluYXJ5X3NlYXJjaChpbnQgYXJyW10sIGludCBsZW5ndGgsIGludCB0YXJnZXQpIHsKCWludCBsb3cgPSAwOwoJaW50IGhpZ2ggPSBsZW5ndGggLSAxOwoJaW50IG1pZDsKCXdoaWxlIChsb3cgPD0gaGlnaCkgewoJCW1pZCA9IChsb3cgKyBoaWdoKSAvIDI7CgkJaWYgKHRhcmdldCA8IGFyclttaWRdKSB7CgkJCWhpZ2ggPSBtaWQgLSAxOwoJCX0gZWxzZSBpZiAodGFyZ2V0ID4gYXJyW21pZF0pIHsKCQkJbG93ID0gbWlkICsgMTsKCQl9IGVsc2UgewoJCQkvLyB0YXJnZXQgbXVzdCBlcXVhbCBhcnJbbWlkXQoJCQlyZXR1cm4gbWlkOwoJCX0KCX0KCXJldHVybiAtMTsKfQoKaW50IG1haW4odm9pZCkgewoJaW50IGFycltdID0geyAxLCAzLCA3LCA4LCAxMCwgNDUsIDY3IH07CglwcmludGYoIiVkIiwgYmluYXJ5X3NlYXJjaChhcnIsIDUsIDMpKTsKCXJldHVybiAwOwp9Cg==