代码随想录-数组(二分法)

发布于 2022-06-04  292 次阅读


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
    }
}


我从未觉得繁琐,说浪漫些,我很爱你。