# 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、二分法查找

  二分查找的前提是列表中的数据是顺序存储且有序。

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

# 3、插值查找

# 4、斐波那契查找

# 2、树结构查找

# 3、散列表查找

Last Updated: 6/4/2020, 10:33:20 AM