1.顺序查找优缺点
优点:
算法简单而且使用面广。
对表中记录的存储结构没有任何要求,顺序存储和链式存储均可;
对表中记录的有序性也没有要求,无论记录是否按关键码有序均可。
缺点:
平均查找长度较大,特别是当待查找集合中元素较多时,查找效率较低。
2.顺序查找具体实现
基本思想:
用线性表来存储数据,从线性表的一端到另一端进行逐个比较,若找到要求值,查找成功,给出该记录在表中的位置。若始终无相等的值,则查找失败,给出失败信息。
1.普通的顺序查找
int n; //设置n个数据
int data[n+1]; //用一维数组来存这n个数据,不从0开始存,从1开始存
int search(int k){
int i=n; //暂存数据个数
while(i>0&&data[i]!=k){ //从最后一个开始比较,一直到i=1比较完成后结束循环
i--;
}
return i; //如果循环中找到对应值k,退出循环 返回位置
}
2.改进的顺序查找(带哨兵)
哨兵就是待查值,
把哨兵放到查找的尽头,做了一个保险,当查找失败时,最后找到了哨兵,会把哨兵的位置返回出去。
这样的优点是:免去了在查找过程中每一次比较后都要判断查找位置是否越界,从而提高查找速度。
int Search(int k)
{
int i = n; //从数组高端开始比较
data[0] = k; //设置哨兵,放到比较方向的尽头,
while (data[i] != k) //与之前相比较少了条件,不用判断下标i是否越界
i--;
return i;
}