查找的基本概念
- 基本概念
- 查找
- 查找表
- 关键字(唯一标识)
- 对查找表的常见操作
- 查找符合条件的数据元素——静态查找表
- 插入、删除某个元素——且也要进行操作a的(动态查找表)
- 评价指标
-
查找长度——需要比较的关键字次数
-
平均查找长度(ASL)
ASL的数量级反映了查找算法时间复杂度
-
顺序查找和折半查找
顺序查找
1. 顺序查找又称线性查找。
算法实现
从头到脚或从脚到头挨个找
适用于顺序表、链表,表中元素有序无序都ok
typedef struct{
ElemType *elem; //动态数组基址
int TableLen; //表的长度
}SSTable;;
int Search_Seq(SSTable ST,ElemType key){
ST.elem[0] = key; //“哨兵”
for(int i = ST.TableLEN;ST.elem[i] != key;--i); //从后往前找
return i; //若查找成功,则返回元素下标;若查找失败,则返回0
}
将ST.elem[0]称为“哨兵”。优点:Search