1. 查找的基本概念
平均查找长度:在查找过程中,一次查找的长度是指需要比较的关键字次数,而平均查找长度则是所有查找过程中进行关键字的比较次数的平均值,其数学定义为:
式中,n是查找表的长度;是查找第个数据元素的概率,一般认为每个数据元素的查找概率相等,即;是找到第个数据元素所需进行的比较次数。
2.顺序查找
顺序查找又称线性查找,主要用于在线性表中进行查找。顺序查找通常分为对一般的无序线性表的顺序查找和对按关键字有序的顺序查找。
查找过程:从查找表的一端开始,顺序扫描查找表,依次将扫描到的关键字和待查找的值key进行比较。如果相等,则查找成功。如果扫描结束仍然没有发现相等的数据元素,则查找失败。
一般线性表的顺序查找
版本1.没加入哨兵
int Search1(int data[ ],int len,int key)
{
for(int i=1; i<=len; i++) //注意从1开始
{
if(data[i]==key)
return i; //查找成功
}
return 0; //查找失败
}
版本2.加入哨兵
int Search2(int data[ ],int len,int key)
{
int i=len;
data[0]=key; //设置“哨兵”
while(data[i]!=key) //如果不是要找的元素
{
i--; //从后往前找
}
return i; //如果查找失败也会返回0
}
“哨兵”作用:将data[0]称为“哨兵”,引入它的目的是使