/**
* [binarySeach 二分查找]
* @param {[Array]} arr [待查找的有序数组]
* @param {[Number|String]} target [查找的目标元素]
* @return {[Integer]} [description]
*/
function binarySeach(arr, target) {
let low = 0,
high = arr.length - 1;
while (low <= high) { // 在low <= high 区间 仍然是有元素的
const mid = parseInt((low + high) / 2); // 考虑整型溢出的情况 mid = low + parseInt((high - low)/2)
if (arr[mid] === target) {
return mid;
}
if (arr[mid] < target) {
low = mid + 1; // target在 [mid+1, high]
} else {
high = mid - 1; // // target在 [low, mid-1]
}
} // end while
// 元素不存在的时候
return -1;
}
const arr = [0, 1, 2, 3, 4, 5, 6, 8, 9, 10]
console.log(binarySeach(arr, 7))
console.log(binarySeach(arr, 6))
console.log(binarySeach(arr, 1))
console.log(binarySeach(arr, 10))
console.log(binarySeach(arr, 0))
前端-二分查找
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前言 本文基于递归算法,如不清楚请先移步 为什么好多人都在研究算法?快,强,省 算法核心分而治之 二分法一切东西一...
- 查找概念 查找(Searching): 即根据给定的某个值,在查找表中确定一个其关键字给定值的数据元素(或记录)。...
- 顺序查找是非常简单常用的查找算法,基本思路:从第一个元素m开始逐个与需要查找的元素x进行比较,当比较到元素值相同(...
- 数据结构与算法--查找之顺序查找和二分查找 符号表的目的是将一个键和一个值关联起来,可以将一对键值对插入到符号表中...