二分查找

55 阅读1分钟

二分查找

从有序数组中查找一个给定的值,通过与中间元素比较,每次将查找范围缩小一半。

代码

function binarySearch(keys, key) {
    let lo = 0, hi = keys.length -1;
    while(lo <= hi) {
        let mid = (lo + hi)/2 | 0;
        if(keys[mid] == key) return mid;
        if(key < keys[mid]) hi = mid - 1;
        if(keys[mid] < key) lo = mid + 1;
    }
    return null;
}

性能

  • 查找:logN;
  • 插入:N;

特点

  • 查找效率高;
  • 插入效率低;