二分查找
1初步了解二分查找
二分查找的易错点
在左闭右闭的情况下讨论,在左闭右开的情况下讨论
左闭右开时right如何赋值?
放在一个越界位置,因为当为size-1时,{1 2 3}当target值为3时,将查找不到3,因为当左右区间重合后由于右边是开区间无法取到。
while里面到底是小于等于还是小于?
while循环里面为true才会继续进行
当target在mid的左边,右边或者相等
到底是mid还是mid—1?
核心原则:不包含已经大或小的mid。(已经比较完的mid)
总结:
题目:
具体步骤:
1.初始化左值和右值,其中当右为闭时右值注意没有减一
2.while循环内部要为true,注意右闭没有等号了
3.初始化mid的值。(每次循环完毕后mid要获取左值和右值,只有放在里面才合理。争对放在里面和外面的情况分类讨论即可)
4. 讨论三种情况,这里注意的是是否有减一,核心思想就是【mid】值已经比较过了,不能再取思考减一或者不减一是否能不再取到num【mid】的值
5.最后通过比较会在左右相等处返回目标值哒
总结: 重点就是初始化和分类讨论 。初始化mwhile循环注意区间,分类讨论时注意mid不能再取。。其中易错为mid初始化的位置
浙公网安备 33010602011771号