java实现二分查找,保姆级解释,一看即会

学习目标:

java实现二分查找


学习时间:

2021.3.29 16:19:31


学习产出:

前提:数组是有序数组,升序或者降序均可;
二分查找的原理:
原理:将数组分为两份,首先取出中间值,判断查找值是否等于中间值,如果等于,则直接返回,否则将数组以中间值为分割线进行分割,再判断查找值和中间值的大小关系,如果查找值小于中间值,则从 中间值前面的数组中查找(不包括中间值,因为已经做过比较了),否则从后面的数组中查找,递归实现全部查找,如果最后没有找到,在循环外返回找不到即可!

代码解释

package com.lian.convert;

/**
 * @author :LSS
 * @description: 二分查找
 * @date :2021/3/29 14:55
 */
public class BinarySearch {
    //定义全局静态变量i,记录查询次数
    private static int i = 1;

    public static void BinarySearch(int[] nums, int start, int end, int Target) {
        //定义中间值
        int median = (start + end) / 2;
        if (Target == (nums[median])) {        // 第一步判断,查找值是否等于中间值,等于直接输出
            System.out.println("第" + i + "次查找,查找区间为" + start + "-" + end + "元素" + Target + "被找到,下标为" + median);
        } else if (Target < nums[median]) {     //第二次判断,查找值是否小于中间值,小于则缩小范围在前半部分查找
            System.out.println("第" + i + "次查找!查找区间为" + start + "-" + end);
            i++;
            BinarySearch(nums, start, median - 1, Target);
        } else {        //第三次判断,查找值是否大于中间值,小于则缩小范围在后半部分查找
            System.out.println("第" + i + "次查找!查找区间为" + start + "-" + end);
            i++;
            BinarySearch(nums, median + 1, end, Target);
        }
        if (i == 1)
            System.out.println("你要查找的数" + Target + "不在该数组中!");
    }

    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7};     //定义查询数组
        BinarySearch(nums, 0, nums.length - 1, 3);      //参数依次为:查询数组,初始开始下标(都是从0开始),初始结束下标,查找目标值
    }
}

总结

不积跬步,无以至千里!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值