Java——二分查找

Java——二分查找

1、二分查找算法

1、介绍

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

2、演示

Java——二分查找_第1张图片

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
    }

你可能感兴趣的:(java,开发语言)