百度面试算法题

来源:互联网 发布:sql force index 编辑:程序博客网 时间:2024/06/08 19:22

在一组排序数中,给定一个数,返回最接近且不大于这个数的位置,要求时间在O(logn)
用二分查找,low和high相差为1时,low即为所求结果的下标。

static int BSearch(int[] num, int key) {        if(key>num[num.length-1]){            return num[num.length-1];        }        int low = 0;        int high = num.length - 1;        int mid;        while (low <= high) {            if (high - low <= 1)                break;            mid = (high + low) / 2;            if (num[mid] > key) {                high = mid;            } else {                low = mid;            }        }        return num[low];    }
0 0
原创粉丝点击