学习笔记-二分法查找

本文详细介绍了二分法查找的思路与实现,包括如何在有序数组中进行查找,以及在需要返回多个查询结果时的处理。通过递归或非递归的方式,阐述了二分查找的关键步骤和注意事项。
摘要由CSDN通过智能技术生成

二分法查找

要求必须是一个有序数组,才可以进行二分法查找。二分法运用到了递归回溯的思想。

思路

1.确定中间数的坐标 mid=(left+right)/2
2.如果中间数大于查询的数,说明查询的数在左边,向左递归继续查询,此时left不变,right变为mid-1
3.如果中间数小于查询的数,说明查询的数在右边,向右递归继续查询,此时right不变,left变为mid+1
3.如果都不是,那就说明中间数就是要找的数,将下标返回,也就是返回mid

注意:结束递归有两种情况,一种是找到了数,直接返回下标,就是3;另一种是没找到,此时left>right,返回-1。
另外,在递归调用自己时,要加上return,这样保证将值正确的传回。

代码

 /**
     * 查找一个数
     * @param arr
     * @param left
     * @param right
     * @param value
     * @return
     */
    private static int binarySearch(int[] arr,int left,int right,int value){
   
        if(left>right){
   
            return -1;
        }
        int mid=(left+right)/2;
        if(value>arr[mid]){
   
            return binarySearch(arr,mid+1,right,value);
        }else if(value<arr[mid]) {
   
            return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值