Javascript 由于索引,二进制搜索无法工作?
我在看 我对索引做了一些修改,但无法使其工作Javascript 由于索引,二进制搜索无法工作?,javascript,algorithm,binary-search,Javascript,Algorithm,Binary Search,我在看 我对索引做了一些修改,但无法使其工作 function bs1(a, tar, l, h) { // pass index, so equal if (h > l) { // not m = (h+l)/2 // l+diff //let m = l + Math.floor( (h - l) / 2 ); let m = Math.floor( (h + l) / 2 ); if (a[m] == tar) r
function bs1(a, tar, l, h) {
// pass index, so equal
if (h > l) {
// not m = (h+l)/2
// l+diff
//let m = l + Math.floor( (h - l) / 2 );
let m = Math.floor( (h + l) / 2 );
if (a[m] == tar)
return m;
// tar... a[m]....
if (a[m] > tar)
return bs1(a, tar, l, m - 1);
// a[m]..tar...
return bs1(a, tar, m + 1, h);
}
return -1;
}
arr = [1, 2, 3, 4, 5, 6, 7];
tar = 5;
out = bs1(arr, tar, 0, arr.length);
console.log(out);
我想做的是:
- 通过
,而不是arr.length
arr.length-1
- 使用
,而不是if(h>l){
if(h>=l){
您是否尝试过在Javascript中搜索二进制搜索实现(例如)?
function bs1(a, tar, l, h) {
// pass index, so equal
if (h > l) {
// not m = (h+l)/2
// l+diff
//let m = l + Math.floor( (h - l) / 2 );
let m = Math.floor( (h + l) / 2 );
if (a[m] == tar)
return m;
// tar... a[m]....
if (a[m] > tar)
return bs1(a, tar, l, m);
// a[m]..tar...
return bs1(a, tar, m + 1, h);
}
return -1;
}
arr = [1, 2, 3, 4, 5, 6, 7];
tar = 5;
out = bs1(arr, tar, 0, arr.length);
console.log(out);