顺序查找,又叫“线性查找”,通常用于线性表。
适用于顺序表、链表,表中元素有序无序都OK。

可在0索引处存“哨兵”,从尾部向头部挨个查找优点:循环时无需判断下标是否越界。
代码实现(哨兵):
typedef struct{//查找表的数据结构(顺序表)
ElemType xelem;//动态数组基址
int TableLen;//表的长度
}sSTable;
//顺序查找
int Search_Seq(sSTable ST,ElemType key){
sT.elem[0]=key;//“哨兵”
int i;
for( i=ST.TableLen;ST.elem[i] !=key;--i);//从后往前找
return i;//查找成功,则返回元素下标;查找失败,则返回C
}
ASL = ∑ i = 1 n \sum_{i=1}^n ∑i=1nPiCj
ASL成功 = (n+1)/2 . (n代表查找的是第n个元素)
时间复杂度为O(N)
ASL失败为n+1,时间复杂度也为O(N)
优点:可以提高ASL失败的查找效率。

优点:可以提高ASL成功的查找效率。
ASL =
∑
i
=
1
n
\sum_{i=1}^n
∑i=1nPiCj
但无论那种优化,算法的的时间复杂度都不会低于O(N)这个数量级。