理念

  • 时间复杂度是O(logn)
  • 依赖顺序表结构
  • 针对有序数组

    解题

  • 定义 low 和 high

  • 找到循环退出条件
  • 找到 return 结果值条件
  • 找到 low 和 high 指针变化逻辑 ```javascript var search = function(nums, target) { let low = 0; let high = nums.length - 1; while(low <= high) {
    1. const mid = low + Math.floor((high - low) / 2);
    2. if (nums[mid] === target) {
    3. return mid;
    4. } else if (nums[mid] > target) {
    5. high = mid - 1;
    6. } else {
    7. low = mid + 1;
    8. }
    } return -1; };

var search = function(nums, target) { const binarySearch = (low, high) => { const mid = low + Math.floor((high - low) / 2); if (low > high) return -1; if (nums[mid] === target) { console.log(mid); return mid; } else if (nums[mid] > target) { return binarySearch(low, mid - 1); } else { return binarySearch(mid + 1, high); } } return binarySearch(0, nums.length - 1); }; ```