# 1、线性表查找
# 1、顺序查找
是从列表的第一个元素开始对列表元素逐个进行判 断,直到找到了想要的结果,或者直到列表结尾也没有找到,这种方法称为顺序查找。
function seqSearch (arr, data) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] == data) {
return true;
}
}
return false;
}
//查找最小值
function findMin (arr) {
let min = arr[0];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i]
}
}
return min;
}
//查找最大值
function findMax (arr) {
let max= arr[0];
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i]
}
}
return max;
}
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
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
# 2、二分法查找
二分查找的前提是列表中的数据是顺序存储且有序。
function binarySearch (arr, data) {
let end = arr.length - 1;
let start = 0;
let mid;
while (start < end) {
mid = Math.floor((start + end) / 2);
console.log("当前的中点", mid);
if (arr[mid] < data) {
start = mid + 1;
} else if (arr[mid] > data) {
end = mid - 1
} else {
return mid;
}
}
return -1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17