由于索引,二进制搜索不起作用?

肯彼得

我在看这个二分搜索

我对索引进行了一些修改,但无法使其正常工作

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) {

是否可以?

穆图

试试这个(做了一些小改动)-> 返回索引 4,这是预期的小提琴

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);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

二进制搜索算法不起作用

将二进制搜索树转换为双链表-不起作用

为什么此线性和二进制搜索基准代码不起作用?

二进制搜索树,有序方法迭代不起作用

二进制搜索不起作用。错误的“第一” 和“最后”

二进制搜索在这种情况下不起作用?

二进制搜索树的删除功能在python中不起作用

如果数组按降序排序,为什么二进制搜索方法不起作用?

C-递归在二进制搜索树中不起作用

为什么二进制搜索在我的测试中不起作用?

查找二进制搜索树的祖先方法不起作用

二进制搜索算法随机生成的数组项不起作用

为什么二进制搜索算法不起作用?

二进制文件读取-写入不起作用

写入二进制文件不起作用

二进制搜索不起作用。错误的“第一个”和“最后一个”

基本二进制到十进制转换程序不起作用(Python)

通过invert函数反转二维二进制数组,但这不起作用,

如何使这个二进制搜索树起作用???(在Java中)

关于“二进制”不起作用的Side Runner论点

ngrok 二进制文件执行在 catalina(mac os) 上不起作用

使用$ ORIGIN在ELF二进制文件中指定解释器不起作用

服务器上的简单go二进制部署不起作用

为什么我的二进制到英语代码不起作用?

`std :: count_if`的二进制谓词不起作用

在Python中绘制二进制预测图不起作用

从二进制文件写入和读取不起作用

highcharts-react-native在iOS二进制文件(.ipa)中不起作用

为什么Horspool在二进制文件上不起作用?