查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,也不需要排序,只需要一个个对比即可,但其实效率很低。我们来看下代码

1public static int search1(int[] a, int key) {
2    for (int i = 0, length = a.length; i < length; i++) {
3        if (a[i] == key)
4            return i;
5    }
6    return -1;
7}

如果找到就返回查找的数所在数组中的下标,如果没找到就返回-1。还有说上面的代码可以优化,使用一个哨兵,免去了每次都要越界的判断,但通过实际测试运行效率并没有提高,无论测试的数据是多还是少运行的时间都差不多,我们来看下代码。

1public static int search2(int[] a, int key) {
2    int index = a.length - 1;
3    if (key == a[index])
4        return index;
5    a[index] = key;
6    int i = 0;
7    while (a[i++] != key) ;
8    return i == index + 1 ? -1 : i - 1;
9}

顺序查找是最简单的一种查找算法,对数据的要求也很随意,不需要排序即可查找。后面会介绍二分法查找,插值查找和斐波那契查找都是基于已经排序过的数据。

201,查找-顺序查找_数据