寻找数组中的区间值

2015-03-06 10:02:50

20110712090928227.png

场景: 有一个数组需要

[1000, 2000, 3000, 4000, 5000]
需要找到某个区间值 
冒泡实现方法如下:
var ret = [1000, 2000, 3000, 4000, 5000];
va k = 4500;
var l = 0;
for (var i = 0; i < ret.length; i++) {
    console.log(ret[i],k);
    if (ret[i]<k) {
        if (i + 1 < ret.length) {
            if (ret[i + 1] >k) {
                l = i;
                console.log('找到的数',ret[i],ret[i+1]);
            }
        }
    }

}

if(l==0)
{
    console.log('没找到') ;
}


 二分法解决方案 
 
function halfMethod(arr,aim,start,end,lastStart,lastEnd){
    if(start>end)
        return -1;
    if(lastStart>-1&&lastEnd>-1)
        return Math.round((lastStart+lastEnd)/2);
    else{
        var mid=Math.round((start+end)/2);
        if(aim==arr[mid])
            return halfMethod(arr,aim,mid,mid,mid,mid);
        else if(aim<arr[mid])
            return halfMethod(arr,aim,start,mid,lastStart,mid);
        else if(aim>arr[mid])
            return halfMethod(arr,aim,mid,end,mid,lastEnd);
    }

}
var a=[1000,2000,,2909,3000,4000,4210,4390,5000];
var b=4500;
console.log(halfMethod(a,b,0,a.length,-1,-1));

你打算打赏多少钱呢?

打赏
(微信扫一扫)