java数组元素查找(二分查找法)

二分查找法使用条件

  • 使用时数组必须是有序数组

 原理

  • 通过下标得到数组内元素间相对的大小关系,定义三个变量:两个边界变量确定查找范围,一个取值两个边界变量中间值的中间变量用于同被查找值比较大小、从而改变边界变量的值进而缩小查找区间的范围、重新确定中间值,并重复这一过程直到中间值下标等于查找值、最小值下标大于最大值下标,退出循环。
public static void main(String[] args) {

        int arr[] = {1,2,3,4,5,6,7,8,9,10};
        System.out.println(binarySearch(arr, 23));
    }
    public static int binarySearch(int[] arr,int key){
        //数组查询区间开始索引
        int head = 0;
        //数组查询区间结尾索引
        int end = arr.length - 1;
        //开始索引小于结尾索引,当开始索引大于于结尾索引时循环结束,则表明该元素不存在。
        while (head <= end) {
            //求要查找的数组区间的中间元素的索引
            int mid = (head + end) / 2;
            if (arr[mid] > key) {
                //如果这次查询的区间中间元素值大于要查找的值,
                //则下一次循环查询区间的结尾等于这次中间元素值的索引-1,往左缩小查询区间。
                end = mid-1;
            } else if (arr[mid] < key) {
                //如果这次查询的区间中间元素值小于要查找的值,
                //则下一次循环查询区间的开头等于这次中间元素值的索引+1,往右缩小查询区间。
                head = mid+1;
            } else {
                //存在则返回元素索引
                return mid;
            }
        }
        //不存在返回-1
        return -1;
    }

 运行效果:当查找 2 时,查找到后返回该元素的索引。

  运行效果:当查找 11 时,因为该元素不存在数组里,则返回-1。

 

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值