
场景: 有一个数组需要
[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));
