算法-二分查找法

一.二分查找法

  • 介绍:二分查找法是一种寻址算法,在一个有序序列中找寻指的数值的下标
  • 时间复杂度:O(logn)

二.思路

1.关键变量

  • start 开始下标
  • end 结束下标
  • mid 中间小标
    重点是找寻中间下标 array[mid] < a,说明a在array[mid]右边,此时变换start下标为start=mid+1 ,此时寻址从mid+1 到end ,array[mid] > a 同理,end下标变更为 end=mid-1 最终array[mid]==a时找到变量下标

三.实现

1.非递归实现

    public static int dichotomy(int[] array,int a){

        int start = 0;
        int end = array.length-1;
        while (start<=end){
            int mid = (start + end)/2;
            if(array[mid]==a){
                return mid;
            }

            if(a<array[mid]){
                end = mid-1;
            }

            if(a>array[mid]){
                start = mid+1;
            }
        }
        return -1;
    }

2.递归实现

    public static int recursionDichotomy(int[] array,int start,int end,int a){
       if(start>end){
           return -1;
       }
       int mid = (start+end)/2;
       if(a==array[mid]){
           return mid;
       }
       if(a>mid){
           return recursionDichotomy(array,mid+1,end,a);
       }
       if(a<mid){
           return recursionDichotomy(array,start,mid-1,a);
       }
       return -1;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值