二分法查找

两种: 循环或递归

    public static int binarySearch(int searchKey,int[] array){
        int low=0;
        int high=array.length-1;
        while (low<=high){
            int middle=(low+high)>>1;
            if (searchKey==array[middle]){
                return middle;
            }else if (searchKey<array[middle]){
                high=middle-1;
            }else {
                low=middle+1;
            }
        }
        return ~low;
    }
  • 递归
    调用:binarySearchRecursion(key,a,0,a.length)
public static int binarySearchRecursion(int searchKey,int[] array,int lowIndex,int highIndex){
        if (searchKey<array[lowIndex] || searchKey>array[highIndex] || lowIndex>highIndex){
            return ~lowIndex;
        }
        int middleIndex=(lowIndex+highIndex)>>1;
        if (searchKey<array[middleIndex]){
            return binarySearchRecursion(searchKey,array,lowIndex,middleIndex-1);
        }else if (searchKey>array[middleIndex]){
            return binarySearchRecursion(searchKey,array,middleIndex+1,highIndex);
        }else {
            return middleIndex;
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,461评论 19 139
  • 1.二分法查找。 思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,...
    Themores阅读 3,483评论 0 1
  • 本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本...
    kyson老师阅读 7,906评论 4 50
  • php实现二分法的查找其实很简单,跟我一起来看看怎么实现吧。 二分法查找需要数组是一个递增的数组。 想要写出二分法...
    f12c2f60fcbb阅读 4,440评论 0 0
  • 昨天傍晚一桌人在池塘边吃饭,忽然一阵大风吹来,旁边一棵大树的枝丫摇起来,黄色的绿色的叶子一齐晃动,簌簌作响。 “啊...
    木下酒肆阅读 1,917评论 0 2