当一个数组是升序/降序时,可以使用二分法。
有两种常见的:左闭右闭,左闭右开。
大致过程:定义左右区间,判断其中心值与目标值的大小关系后,修改左/右值,直到找到与目标值相等的点,否则返回-1。
有两个需要注意的点:1.while(left" "right);2.if() right=middle(-1)。
当左闭右闭时:以一个极端的例子理解:[1,1],所以left<=right;right=middle-1(因为middle一定不是中心值了,所以右边不应该包含)。
当左闭右开时:[1,1),所以left<right;right=middle.
左闭右开示意: