二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
# 要求:
1.必须为线性表;
2.有序;
代码示例:
/** * 假定数组为升序排列 * array: 查找范围 * target: 目标值 */ function binarySearch (array, target) { if (!array || array.length === 0) { return -1 } let left = 0; // 数据左区间边界 let right = array.length - 1; // 查找右区间边界 while (left <= right) { const middle = Math.floor((right + left) / 2); // 中间位置 if (array[middle] === target) { return middle } else if (array[middle] > target) { // 将左区间边界缩小到middle + 1位置 left = middle + 1; } else { // 将右区间边界缩小到 middle - 1位置 right = middle - 1; } } return -1 // 未找到匹配值,则返回-1 }
leetcode问题练习: Search Insert Position