Java——二分折半查找法

Java——二分查找法

二分折半查找,效率比较高,每次都从范围最中间开始比较,然后逐渐缩小范围,二分折半查找法的要求就是该序列在使用之前一定是要有序的,不然二分折半查找对其没有作用。
先分析一下折半查找

int[] a={1,2,3,4,5,6,7,8,9,10,11,12};
//在这里我们先定义一个数组
然后我们查找一个10这个数字,第一次比较的时候,由两边的位置来找到中间的位置然后和中间的进行比较,中间的位置是6,10比6大,所有在右边的范围里面再找一个中间的数进行比较,右边从6开始寻找,因为位置5的那个数字已经比较过了再比较一次没有意义,我们找到中间位置8,在该位置上的数就9,10还是比9大,然后我们在从右边开始找,我们再通过上面寻找的方法找到中间位置9,正好10相等,返回该数的位置。
left right middle
第一次 0 11 5
第二次 6 11 8
第三次 7 11 9

下面是实现的代码

public class Test01 {
    public static void main(String[] args) {
        int[] a={1,2,3,4,5,6,7,8,9,10,11,21};

        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        System.out.println(binarySearch(a,6));
    }
    public static int binarySearch(int a[],int searchNum){
        int left=0;
        int right=a.length-1;
        int middle=(right+left)/2;
        while(left<=right){
            middle=(right+left)/2;
            if(searchNum==a[middle]){
                return middle;
            }else if(searchNum<a[middle]){
                right=middle-1;

            }else{
                left=middle+1;

            }
        }
        return -1;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值