(C语言实现)静态查找表之顺序表的查找
程序员文章站
2022-07-15 09:22:03
...
实现思路:
从表中的最后一个记录开始,逐个进行纪律的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功;反之,则查找失败。为了提高查找效率,我们可以设置一个监视哨。
监视哨:所谓的监视哨就是将表中的第一个元素赋值为给定值(也可以将它设在高下标处),它的目的免去查找过程中每一步都要检测整个表是否检测完毕。
但是只在ST.length>=1000时,进行一个查找所需的平均时间几乎减少一半。
代码
int Search_Seq(SSTable ST,int key)
{//key为所要查找的元素的值,返回该值在顺序表中的位置
int i;
ST.elem[0].key=key;//将第一个元素的关键字赋值为key
for(i=ST.length;!EQ(ST.elem[i].key,key);--i)
return i;
}
性能分析
在每个关键字查找的概率都相等的条件下,ASL=(n-1)/2
缺点:平均查找长度较大,特别是当n很大时,查找效率很低。
优点:算法简单,适应面广。
上一篇: 自定义函数的完整写法
下一篇: jsp自定义标签写法