直接上代码和注释
/**
* 二分法
* 如果二分之后能够明确目标值在二分的哪一侧,
* 即可使用二分法
*
* 二分得到一个mid,arr[mid]要和一个compVal比较以判断
* 目标值的位置,
* 若 compVal为arr[right],
* 1. arr[mid] > compVal, 最小值一定是在mid的右侧,则 left = mid + 1,
* 2. arr[mid] < compVal, 最小值可能就在mid,也可能在其左侧,则 right = mid
* 3. arr[mid] = compVal, {1, 1, 2, 2, 2}或{2, 2, 2, 1, 2}或{1, 1, 1, 1, 1}都有可能,
* 因此只能 right-- 慢慢找
*
* 那么,compVal为arr[left]可以吗?
* 答案是不可以,因为 arr[mid] > compVal 时,可能是{1, 2, 3, 4, 5} 或 {3, 4, 5, 1, 2}