Java——二分查找

本文详细介绍了二分查找算法,包括其原理、实现过程以及在Java中的应用实例,强调了线性表有序和顺序存储的重要性。
摘要由CSDN通过智能技术生成

Java——二分查找

1、二分查找算法

1、介绍

二分查找(Binary search)也称折半查找,是一种效率较高的查找方法。但是,二分查找要求线性表中的记录必须按关键码有序,并且必须采用顺序存储。

2、演示

img

3、原理

二分查找算法的原理如下:
1. 设置查找区间:low = 0;high= n;
2. 若查找区间[low, high]不存在,则查找失败;否则转步骤3
3. 取中间位mid = (low + high) / 2;比较 target 与 arr[mid],有以下三种情况:
3.1 若 target < arr[mid],则high = mid - 1;查找在左半区间进行,转步骤2;
3.2 若 target > arr[mid],则low = mid + 1;查找在右半区间进行,转步骤2;
3.3 若 target = arr[mid],则查找成功,返回 mid 值;

4、实现

    //二分查找算法
    @Test
    public void dichotomySearch(){
        Integer[] arr = {1,3,5,8,12,56,90};
        Integer index2 =upperBinarySearch(arr,12);
        System.err.println(index2);

    }

    /**
     *
     * @param arr 有序数组
     * @param data 需要查找的数据
     * @return
     */
    public  static Integer upperBinarySearch(Integer arr[],Integer data){
        int left = 0;//开始
        int rigth = arr.length-1;//结束
        while (left<=rigth){ //left ==rigth 区间仍然有效
           int middle = (left+rigth)/2 ;//中间值
            if(arr[middle]>data){//往左边找
                rigth = middle-1;
            }else if(arr[middle]<data){ //往右边找
                left=middle+1;
            }else{
                return middle; //找到了
            }
        }
        return -1; //没有找到返回-1
    }

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值