查找是一类重要的算法,尤其是在现今的大数据时代来看更是如此,选择一个好的查找算法往往可以起到事倍功半的效果

顺序表查找

顺序表查找是最为简单也是最为笨重的一类查找,其遵循的理念就是一个一个找。当需要在顺序表中查找一元素时,需要做的就是从头到尾对表进行一次遍历,直到找到结果为止

代码:

1
2
3
4
5
6
int SequentialSearch(int* a, int n, int key) {
for (int i = 0; i < n; i++)
if (a[i] == key)
return i;
return -1;
}

改进版顺序查找

为了使顺序表在每次查找之前不进行不必要的判断是否越界,我们可以利用 “哨兵” 法,在数组的开头或者末尾之前设置一个 “哨兵” ,查找至哨兵位置直接返回没找到即可

代码:

1
2
3
4
5
6
int SequentialSearch(int* a, int n, int key) {
int i = n - 1;
a[0] = key
while (a[i--] != key);
return i;
}

注意:这样写返回 0 表示没有找到