二分查找也叫折半查找,二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素 但是这个查找必须要求数组中的数字是有顺序性的其实还有很多关于这个二分查找的变种算法,可以自行拓展下。
而且此算法在求职中有很大几率会被提问,所以需要掌握下
上代码:
/**
* 二分查找,找到该值在数组中的下标,否则为-1
*/
static int binarySerach(int[] array, int key) {
int left = 0;
int right = array.length - 1;
// 这里必须是 <= 如果出现数组情况是 arr ={1,2,6} 而6是需要查找的数,如果不是<=则会出现找不到的情况
while (left <= right) {
int mid = (left + right) / 2;
if (array[mid] == key) {
return mid;
}
else if (array[mid] < key) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return -1;
}