算法-查找
/ / 点击 / 阅读耗时 3 分钟顺序查找
按照数组顺序一个一个的找下去,直到找到
1
2
3
4
5
6
7
8const orderSearch = (source, target) => {
for (let i = 0; i < source.length; i++) {
if (source[i] === target) {
return i;
}
}
return -1;
}
折半查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。[1]
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//使用递归
const binarySearch = (source, left, right, target) => {
let midIndex = Math.floor((right + left) / 2);
let mid = source[midIndex];
if (target === mid) {
return midIndex;
} else if (target < mid) {
return binarySearch(source, left, midIndex, target);
} else if(target > mid){
return binarySearch(source, midIndex, right, target);
}
return -1;
}
//不使用递归
const biSearch = (source, left, right, target) => {
while(left <= right) {
let mid = Math.floor((right + left) / 2);
if (source[mid] === target) {
return mid;
} else if (target < source[mid]) {
right = mid;
} else {
left = mid;
}
}
return -1;
}
分块查找
step1 先选取各块中的最大关键字构成一个索引表;
step2 查找分两个部分:先对索引表进行二分查找或
顺序查找,以确定待查记录在哪一块中;
然后,在已确定的块中用顺序法进行查找。
树形查找
散裂查找
- 在进行查找时,在记录的存储位置与它的关键字之间建立一个确定的对应关系h,以线性表中每个元素的关键字K为自变量,通过函数h(K)计算出该元素的存储位置,我们将h函数称为散列函数或哈希函数。这种查找方法称为散列查找。
- 就是常用的js对象的读取?