各位大神我的这个二分查找哪里错了附上示例最好

qq_34177237 2016-11-24 12:25:05
function binarySearch(arr, goal) {
let left = 0
let right = arr.lenth - 1
let mid = (left + right) / 2
while(left < right & arr[mid] != goal) {
if (arr[mid] > goal) {
right = mid - 1
}else if (arr[mid] < goal){
left = mid + 1
}
mid = (left + right) / 2
}
if(arr[mid] == goal) {
return mid
}
return -1
}

let array = [1,2,3,4,5,6,7,8]
console.log(binarySearch(array,5))
...全文
381 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2016-11-25
  • 打赏
  • 举报
回复
设置个断点 单步调试, 看看是否符合你的逻辑
shiter 2016-11-25
  • 打赏
  • 举报
回复
引用 1 楼 zzz3265 的回复:
while(left < right & arr[mid] != goal) 修改为 while( (left<=right) && (arr[mid] != goal))
厉害,改别人代码的真正是厉害
赵4老师 2016-11-25
  • 打赏
  • 举报
回复
“多一少一”问题占程序员常犯错误的10%以上! 避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为 x、x-1、x+1中的哪个? <、<=、==、>、>=中的哪个?
Yofoo 2016-11-24
  • 打赏
  • 举报
回复
while(left < right & arr[mid] != goal) 修改为 while( (left<=right) && (arr[mid] != goal))

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧