什么是二分查找

二分查找(Binary Search)

前提要求

  1. 必须采用顺序存储结构
  2. 必须为有序排列

    复杂度分析

  • 时间复杂度 O(logN)

二分查找模板

模板一

二分法最基础形式,在数组中找出 target 的索引位置,如果不存在则返回 -1

  1. var search = function(nums, target) {
  2. let l = 0, r = nums.length - 1;
  3. while (l <= r) {
  4. const mid = l + Math.floor((r - l) >> 1);
  5. if (nums[mid] === target) {
  6. return mid;
  7. } else if (nums[mid] < target) {
  8. l = mid + 1;
  9. } else {
  10. r = mid - 1;
  11. }
  12. }
  13. return -1;
  14. };

模板二


二分查找应用