1、概念:
顺序查找(Sequential Search)又叫线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找不成功。
1、顺序表查找算法:
从头开始遍历 0 ~ a.length - 1,遇到第一个相等的即返回
2、顺序表查找算法优化:
优化的好处是避免判断i是否越界
如果一开始就查到a[0] == key,则找到,否则a[0]被置为哨兵,从尾部查找,找到a[0],说明数组a中没有key
3、全部代码:
public class Sequential_Search {public static int sequential_Search1(int[] a, int key) {int i;for (i = 0; i < a.length; i++) {// 防止索引越界i < a.length或i <= a.length - 1都可以if (a[i] == key) {return i;}}return -1;// 返回-1表示 a中找不到key}// 优化的好处是避免判断i是否越界public static int sequential_Search2(int[] a, int key) {if (a[0] == key) {// 如果一开始a[0]就等于key了,不需要将a[0]设置为哨兵,直接返回结果return 0;}a[0] = key;// 设置哨兵,防止数组索引越界int i = a.length - 1;while (a[i] != key) {i--;}if(i == 0){//如果i = 0则说明没有找到return -1;}return i;// a[i] == key 返回下标}public static void main(String[] args) {int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int index = sequential_Search2(a, 12);System.out.println(index);}
}