二分查找得前提,这个数组必须被排好序,否则无意义。
public static void main(String[] args) {
Integer[] array = {1, 3, 5, 7, 9, 11, 13};
Integer result = sortBy(array, 9);
System.out.println(result+1);
}
/**
* @param array
* 需要查找得数组
* @param selectNum
* 需要查找得数
* @return
*/
public static Integer sortBy(Integer[] array, Integer selectNum) {
Integer begin = 0;
Integer end = array.length - 1;
Integer result;
while (true) {
Integer mid = (begin + end) / 2;
//当查找结束都没有找到时候返回-1
if (begin > end) {
result = -1;
break;
} else if (selectNum == array[mid]) {
//查找到了返回数组下标
result = mid;
break;
} else if (selectNum < array[mid]) {
//在中间数得右边进入这里
end = mid - 1;
continue;
} else {
//在中间数得左边,进入这里
begin = mid + 1;
continue;
}
}
return result;
}