二分查找

来源:互联网 发布:什么叫大数据金融 编辑:程序博客网 时间:2024/06/06 02:26

二分查找是一种效率非常高的查询算法,其简单思想是:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分

这里给出二分查找算法的Java实现:

int BinSearch(int Array[],int low,int high,int key){    if (low<=high)    {        int mid = (low+high)/2;        if(key == Array[mid])            return mid;        else if(key<Array[mid])            //移动low和high            return BinSearch(Array,low,mid-1,key);        else if(key>Array[mid])            return BinSearch(Array,mid+1,high,key);    }    else        return -1;}

最近看到A到一道题,已知一个数组是递增或者递减,或者是递增递减交错,求该数组的峰值,算法要求时间复杂度在O(logn), 有思路的可以在评论区留言,大家一起讨论,谢谢!

0 0
原创粉丝点击