欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(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很大时,查找效率很低。
优点:算法简单,适应面广。