如何在排序后的数组中找到某个值?

这是一个排序数组:
[15, 24, 30, 48, 49, 64, 86, 90, 100, 121, 130]

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
26
27
28
29
30
31
32
33
34
35
36
function binarySearch(arr, x) {
  // left index of the current interval
  let l = 0;
 
  // right index of the current interval
  let r = arr.length - 1;
 
  // middle index of the current interval
  let mid;
 
  while (r >= l) {
    mid = l + Math.floor((r - l) / 2);
 
    // If the element is present at the middle
    // itself
    if (arr[mid] == x) {
      return mid;
    }
 
    // If element is smaller than mid, then
    // it can only be present in left subarray
    if (arr[mid] > x) {
      r = mid - 1;
    }
 
    // Else the element can only be present
    // in right subarray
    if (arr[mid] < x) {
      l = mid + 1;
    }
  }
 
  // We reach here when element is not
  // present in array
  return -1;
}

  

 

 

 

 



posted @   zhang305  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示