给定一个元素x(整数/字符/字符串)和一个已经排好序的数组, 求元素x在数组中所在的位置i,如没有返回-1:
public static <T extends Comparable<? super T>> int binarySearch(T[] a, T x) {
int low = 0;
int high = a.length -1;
while (low <= high) {
int mid = (low + high) / 2;
if(a[mid].compareTo(x) < 0) {
low = mid + 1;
}
else if(a[mid].compareTo(x) > 0) {
high = mid -1;
}
else {
return mid;
}
}
return -1;
}