JAVA十大算法详解之二分查找,不“细”你来d我

二分查找算法

/**

  • 二分查找算法
  • 要求:给定的数组有序
  • 思路:二分查找在有序的条件下,只需要一次次的确定所要查找的值所在的区间。而将这个区间定为上一次查找数组的一般效率无疑是最高的,所以也叫二分查找;;
  • 去中间值比较,如果相等则直接返回;
  • 右查找:如果中间值偏小,则说明待查找数位于mid后面的1/2数组中,此时要确定mid中间值,就绪要将左边界定为mid+1
  • 左查找:如果中间值偏大,则说明待查找数位于mid前面的1/2数组中,此时要确定mid中间值,就绪要将右边界定为mid-1;
    */
public static int erfen(int[] arr,int n){
        int l=0;
        int r= arr.length-1;
        int mid=0;
        while (l<=r){
            mid=(l+r)/2;
//            判断是否查到
            if (arr[mid]==n){
//                查到了,直接返回
                return mid;
            }else if (arr[mid]>n){//中间值大于待查找数,则向左查找
//                左查找:数组的右边界减小为中间值减去1
                r=mid-1;
            }else {//否则就右查找
//                右查找时数组左边界变为mid+1
                l=mid+1;
            }
        }
//        查无此数,返回-1;返回啥都行,代表没有这个数
        return -1;
    }

运行结果:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值