二分法
原始二分法
情况一:左闭右闭的情况,也就是说int right = nums.lenght - 1
区间为:[left, right]
循环的退出条件是while(left<=right)
为什么:
在循环搜索中要搜索全部的索引坐标。不能有剩下的索引。
要退出循环的话条件是left = right + 1。所以区间变成[right + 1, right],这是正确的。
假如:退出循环写成了while(left < right)会发生什么??
这样退出条件是 left == right ,也就是区间[left ,right] ------>[right, right],所以区间[right, right]就没有搜索。
情况二:左闭右开,也就是说int right = nums.lenght
区间为:[left, right)
退出循环条件为while(left < right)
为什么:
退出循环的条件是left = right,所以区间变成了(right, right),因为取不到right,所以,搜索了全部区间,退出循环正确。
如果:条件写成了while(left <= right)会发生什么??
会出现保存,数组越界。数组退出搜索区间变为[right, right],取不到right,因此报错