二分查找的实现
刚学算法,看了二分查找的概念,在还没看示例代码的时候,根据自己的思路用js写了实现:
function binarySearch(arr, aimNum) {
let index = Math.ceil(arr.length/2) - 1;
if (arr[index] === aimNum) {
return index
} else if (arr[index] > aimNum){
halfSearch(arr.slice(0,index), aimNum)
} else if (arr[index] < aimNum) {
halfSearch(arr.slice(index+1), aimNum)
}
}
看了示例代码,发现我的思路好像有点偏,但我觉得在日常开发中好像也可以,就是不知道这种方式是不是不够完善,有没有大佬给我指点一下?跪谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可以是可以,但肯定不会有
Array#findIndex
快。而且你这写的有挺多问题
slice
效率太低,应递归下标https://github.com/PiNengShao...
不用着急慢慢来想二分查找这种经典的思想,以后你做题肯定会碰到很多次的,到时候的后闭着眼睛都能写出来,你现在就先死记一下他的边界条件,可以参考一下这个相当于c++里面的lower_bound他算是在工作中比较用得到的二分查找实现了我这个边界条件是l <= r的l < r的你可以在网上自己搜一下