二分查找的前提

  1. 目标函数单调递增或递减
  2. 存在上下界 bounded
  3. 能够通过索引访问 index accessiable

    代码模板

    1. public int binarySearch(int[] array, int target) {
    2. int left = 0, right = array.length - 1, mid;
    3. while (left <= right) {
    4. mid = (right - left) / 2 + left;
    5. if (array[mid] == target) {
    6. return mid;
    7. } else if (array[mid] > target) {
    8. right = mid - 1;
    9. } else {
    10. left = mid + 1;
    11. }
    12. }
    13. return -1;
    14. }