class Ideone
{
{
int[] numbers = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};
boolean found = binarySearch(numbers, 0, numbers.length-1, 5);
System.
out.
print("Search for 5 " + found
); }
public static boolean binarySearch(int[] data, int min, int max, int target){
if (max > min) {
int midpoint = (min + max) / 2; // determine the midpoint
if (data[midpoint] == target) {
return true;
}
if (data[midpoint] > target) { // use lower half
return binarySearch(data, min, midpoint-1, target);
}
else { // use upper half
return binarySearch(data, midpoint+1, max, target);
}
}
return false;
}
}
Y2xhc3MgSWRlb25lCnsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KICB7CiAgICBpbnRbXSBudW1iZXJzID0gezIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxfTsKICAgIGJvb2xlYW4gZm91bmQgPSBiaW5hcnlTZWFyY2gobnVtYmVycywgMCwgbnVtYmVycy5sZW5ndGgtMSwgNSk7CiAgICBTeXN0ZW0ub3V0LnByaW50KCJTZWFyY2ggZm9yIDUgICIgKyBmb3VuZCApOwogIH0KCQogIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBiaW5hcnlTZWFyY2goaW50W10gZGF0YSwgaW50IG1pbiwgaW50IG1heCwgaW50IHRhcmdldCl7CiAgICBpZiAobWF4ID4gbWluKSB7CiAgICAgIGludCBtaWRwb2ludCA9IChtaW4gKyBtYXgpIC8gMjsgIC8vIGRldGVybWluZSB0aGUgbWlkcG9pbnQKCiAgICAgIGlmIChkYXRhW21pZHBvaW50XSA9PSB0YXJnZXQpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQoKICAgICAgaWYgKGRhdGFbbWlkcG9pbnRdID4gdGFyZ2V0KSB7IC8vIHVzZSBsb3dlciBoYWxmCiAgICAgICAgcmV0dXJuICBiaW5hcnlTZWFyY2goZGF0YSwgbWluLCBtaWRwb2ludC0xLCB0YXJnZXQpOwogICAgICB9CiAgICAgIGVsc2UgeyAvLyB1c2UgdXBwZXIgaGFsZgogICAgICAgIHJldHVybiAgYmluYXJ5U2VhcmNoKGRhdGEsIG1pZHBvaW50KzEsIG1heCwgdGFyZ2V0KTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KfQ==