场景: 有一个数组需要
[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));
你打算打赏多少钱呢?
(微信扫一扫)