查找

本文最后更新于 2025年8月2日 晚上

参考:
https://juejin.cn/post/6844903955252805645
https://juejin.cn/post/6844903866610221064

查找和排序都是在程序设计中经常用到的算法。查找相对而言较为简单,排序比查找要复杂一些。

查找有顺序查找、二分查找、哈希表查找、二叉排序树查找等。

顺序查找

直接 for 循环顺序查找效率最高。

二分查找

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
var searchRange = function (nums, target) {
let left = 0;
let mid;
let right = nums.length;
while (left < right) {
mid = (left + right) >>> 1;
if (nums[mid] > target) {
right = mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else if (nums[mid] == target) {
right = mid;
}
}
let leftIndex = -1,
rightIndex = -1;
if (left == nums.length) return [-1, -1];
else leftIndex = nums[left] == target ? left : -1;

left = 0;
right = nums.length;
while (left < right) {
mid = (left + right) >>> 1;
if (nums[mid] > target) {
right = mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else if (nums[mid] == target) {
left = mid + 1;
}
}
if (left == 0) return [-1, -1];
else rightIndex = nums[left - 1] == target ? left - 1 : -1;
return [leftIndex, rightIndex];
};

查找
https://xuekeven.github.io/2021/09/19/查找/
作者
Keven
发布于
2021年9月19日
更新于
2025年8月2日
许可协议