学习笔记静态查找表-顺序表的查找

顺序表的查找可以用顺序查找实现

顺序查找的存储结构:

typedef struct{

 ElemType *elem;

int length;

};

顺序查找:从表中最后一个记录进行查找 直到找到记录的关键词和给定值的记录

查找过程中的哨兵逻辑:

在表头设置哨兵,从表尾进行查找,如果查找过程中遇到哨兵,则表查找结束

查找操作的性能分析:

主要从时间复杂度和空间复杂度进行评判:

在时间复杂度的评判中,查找算法的基本操作为:将记录的关键字和给定值进行比较;

则可以 “关键字与给定值进行比较的记录个数的平均值” 来评判查找操作的性能

设Pi为与第i个记录进行比较的概率  Ci 为已与给定值进行过比较过的关键字个数;其中ΣPi=1;

则查找成功时的平均查找长度为ASL=ΣPi*Ci;

其中Ci取决于记录在表中的位置,如记录在第一个,采取从n到1的顺序进行查找,则需要比较查找表的长度n次 Ci=n-i+1;

先关公式如下:

n=length;

ASL=nP1+(n-1)P2+....+2Pn-1+Pn;

如果每个记录的查找概率相同,及 Pi=1/n;

则ASL=PiΣ(Ci)=1/nΣ(n-i+1)=(1/n)(n(n+1)/2)=(n+1)/2

当查找概率不同时,可对数据进行排序,可以提高查找效率

方案:对数据元素增加一个数据项:访问频度;并按访问频度进行升序排列,频度越大,则数据元素在表中的位置越靠后,这样当我们从后往前查找时的效率最高,每次查找完需对该记录的频度加一;

 

顺序查找和其他查找方法的优缺点:

缺点:平均查找长度较大,当n很大时 插好效率很低

优点:算法简单,比较常用

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值