二分查找
从有序数组中查找一个给定的值,通过与中间元素比较,每次将查找范围缩小一半。
代码
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;
特点
- 查找效率高;
- 插入效率低;