欢迎光临散文网 会员登陆 & 注册

二分查找的实现,和易错点

2023-07-01 21:04 作者:MicroShuai  | 我要投稿

输入: nums = [-1,0,3,5,9,12], target = 9 

输出: 4 解释: 9 出现在 nums 中并且下标为 4

二分查找要满足两个条件:

1️⃣: 元素都是从小到大,或者从大到小排列 

2️⃣:元素不重复


1️⃣写代码易错点, left<=right 是循环的结束条件,当left比right大时,说明没有找到对应的值

  如果条件为left<right ,那right指针应该为arr.length 但是没有作为长度为下标的元素,这样的写法并不推荐

2️⃣mid 为什么是left+(right-left)/2?

    如果当left 和 right 很大的时候,会溢出,超过int最大值,所以使用right-left 来保证不会溢出

总结: 二分查找的复杂度为O(log2n) 随这n越来越大,相比O(n) 时间复杂度会越来越小




二分查找的实现,和易错点的评论 (共 条)

分享到微博请遵守国家法律