前提条件

  1. 有序数组
  2. 无重复元素

区间定义

循环不变量

两种区间定义

  1. 左闭右闭[left, right]
  2. 左闭右开[Left, right)

套路

  1. while left < right:
  2. middle = (left + right) // 2
  3. if ……
  4. left++
  5. else if ……
  6. right++
  7. else
  8. return middle