二分查找算法
使用场景:有序数列中查找item所在下标,不存在返回-1
核心逻辑:每次与数列中间的数字比较,比较后确定下一次循环比较在中点前还是后
/**
* 二分查找算法
*
* @param list 已知从小到达有序数组
* @param item 需要查找的数据
*/
static int binary_search(int[] list, int item) {
int low_position = 0;
int high_position = list.length - 1;
while (low_position <= high_position) {
int mid = (low_position + high_position) / 2;
int guess = list[mid];
if (guess == item) return mid;
else if (guess > item) {
high_position = mid - 1;
} else {
low_position = mid + 1;
}
}
return -1;
}