704.二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
前提条件:
- 数组内元素为升序
- 数组内元素无重复值
算法实现:
二分法要点:保持不变量
Java代码实现算法:
public class test {
public static void main(String[] args) {
//创建数组
int [] num = {1,3,4,5,6,7};
//设置目标值
int target = 4;
//调用二分法查找
int result = nums(num,target);
System.out.println(result);
}
public static int nums(int[] array,int target) {
int begin = 0; //设置左边界
int end = array.length-1; //设置右边界
while(begin<=end) { //因为begin=end是有意义的所以使用<=
int mid = (begin+end)/2; //定义mid为中间值
if (mid == target) { //如果中间值和目标值相等
return target; //返回目标值
}else if (mid > target) { //如果中间值大于目标值
end = mid - 1; //右边界为中间值左边一位
}else if (mid < target) { //如果中间值小于目标值
begin = mid + 1; //左边界为中间值右边一位
}
}
return -1; //循环结束没有找到目标值返回-1
}
}
