02折半查找
基本思想:在有序数组中,取中间值与查找值进行比较,如果中间值大于查找值,则在左半区继续查找;如果中间值小于查找值,则在右半区查找。
讲解:
//创建一个名为Binary_search的方法,传入数组a及其大小以及查找值key
public static int Binary_search(int a[],int n,int key){
//设置左边界low初始值为0,右边界high初始值为n
int low = 0,high = n;
//while循环条件:左边界始终不超过右边界
while(low <= high){
//记录中间位置mid的值
int mid = (low + high) / 2;
//判断查找值key是否小于中间值
if(key < a[mid]){
//如果是则更新右边界high的值为mid - 1
high = mid - 1;
//判断查找值key是否大于中间值
}else if(key > a[mid]){
//如果是则更新左边界low的值为mid + 1
low = mid + 1;
//如果出现查找值key刚好等于中间值a[mid]
}else{
//则直接返回此时的mid值,即查找值的下标
return mid;
}
}
//如果整个while循环结束了,仍未返回,则返回-1,表示该数组中无查找值
return -1;
}