package sort;
public class BinaryFind {
static int[] a = { 1, 2, 4, 6, 8, 9, 10, 40 };
public static void main(String[] args) {
System.out.println(binaryFind(3));
System.out.println(binaryFindRec(3, 0, a.length - 1));
}
public static int binaryFind(int key) {
int lowerBound = 0;
int upperBound = a.length - 1;
int current;
while (true) {
current = (lowerBound + upperBound) / 2;
if (a[current] == key) {
return current;
} else if (lowerBound > upperBound) {
return -1;
} else {
if (a[current] > key) {
upperBound = current - 1;
} else {
lowerBound = current + 1;
}
}
}
}
public static int binaryFindRec(int key, int lowerBound, int upperBound) {
int current;
while (true) {
current = (lowerBound + upperBound) / 2;
if (a[current] == key) {
return current;
} else if (lowerBound > upperBound) {
return -1;
} else {
if (key
return binaryFindRec(key, lowerBound, current - 1);
} else {
return binaryFindRec(key, current + 1, upperBound);
}
}
}
}
}