二分查找
灵感胜于汗水 Lv5

二分法

在计算机科学中,二分查找算法,也称折半搜索算法,是一种在有序数组中查找某一特定元素的搜索算法

想要应用二分查找法,则这一堆数应有如下特性:

  • 存储在数组中
  • 有序排序

搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束

如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较

如果在某一步骤数组为空,则代表找不到

这种搜索算法每一次比较都使搜索范围缩小一半

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const arr = [1, 2, 3, 4, 6, 8, 11, 17, 23, 24, 30]

function find(arr, num) {
if (!Array.isArray(arr) || arr.length === 0) {
return false
}
let l = 0
let r = arr.length - 1
while (l <= r) {
let mid = Math.floor((l + r) / 2)
if (arr[mid] === num) {
return true
} else if (arr[mid] < num) {
l = mid + 1
} else {
r = mid - 1
}
}
return false
}

console.log(find(arr,3))//true
console.log(find(arr,13))//false
console.log(find(arr,23))//true
console.log(find(arr,33))//false
  • 本文标题:二分查找
  • 本文作者:灵感胜于汗水
  • 创建时间:2022-05-14 22:46:39
  • 本文链接:https://cjhsyc.github.io/2022/05/14/二分查找/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!