# 2. 说说你对二分查找的理解?如何实现?
在计算机科学中,二分查找算法,也称折半搜索算法,是一种在有序数组中查找某一特定元素的搜索算法
想要应用二分查找法,则这一堆数应有如下特性:
- 存储在数组中
- 有序排序 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束
如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较
如果在某一步骤数组为空,则代表找不到
这种搜索算法每一次比较都使搜索范围缩小一半
// 如果数据是有序的,并且不存在重复项,实现代码如下:
function binSearch(arr, data) { // 二分查找
// 二分查找
var upperBound = arr.length-1; // 数组的上边界位置
var lowerBound = 0; // 数组的下边界位置
while (lowerBound <= upperBound) {
var mid = Math.floor((upperBound + lowerBound) / 2);
if (arr[mid] < data) {
lowerBound = mid + 1;
} else if (arr[mid] > data) {
upperBound = mid - 1;
} else {
return mid;
}
}
console.log('返回-1');
return -1;
}