查找算法:顺序查找
思维导图:
顺序查找的定义:
顺序查找的代码实现:
typedef struct { //查找表数据结构
int *elem; //动态数组基地址
int TableLen; //表长
}SSTable;
int Search_Seq(SSTable st,int key){
st.elem[0] = key; //哨兵,当没有查找到时返回0
for(int i=st.TableLen;st.elem[i]!=key;i--){}
return i; //返回0:查找失败
}
顺序查找的性能:
查找表有序时:
查找表无序时:
ps:
1、若成功节点有n个,那失败节点有n+1个
2、假设每个节点的查找概率相同,则查找失败的概率为1 / n+1
3、此时lj表示层数,查找25失败时就会到达[20,30]这个区间,即第四层,但实际只比较了三次,查找到了第三层