二分查找又称折半查找,只适用于有序数组
二分查找就是将需要查找的元素不断地与数组中间的元素进行比较,数组不断地拆分为两段(查找元素小于中间值在前半段查找,大于中间值在后半段进行查找)
代码展示
// javaScript 的二分查找算法
var Arr = [1, 3, 6, 7, 10, 12, 15];
// 参数(需要查找的元素,在哪个数组对象中查找,最小索引,最大索引)
function getNum(find, arr, low, high) {
// 判断数组不为空
if (low <= high) {
// 第一个元素为查找元素
if (arr[low] == find) {
return low;
}
// 最后一个元素为查找元素
if (arr[high] == find) {
return high;
}
//取中间元素
var mid = Math.ceil((high + low) / 2);
// 中间元素为查找元素
if (arr[mid] == find) {
return mid;
}
// 从中间元素进行分段
// 查找元素小于中间值,在前半段查找
else if (arr[mid] > find) {
return getNum(find, arr, low, mid - 1);
}
// 查找元素大于中间值,在后半段查找
else {
return getNum(find, arr, mid + 1, high);
}
}
return -1;
}
console.log("返回索引值:"+getNum(12, Arr, 0, Arr.length - 1));