查找的基本概念:
在数据集合中寻找满足某种条件的数据元素的过程称为查找
查找表(查找结构):用于查找的数据集合称为查找表,它由同一类型的数据元素(或记录)组成
关键字:数据元素中唯一标识该元素的某个数据项的值,使用基于关键字的查找,查找结果应该是唯一的
查找长度:在查找运算中,需要对比关键字的次数称为查找长度
动态查找表和静态查找表
1)若在查找的同时对表做修改操作(如插入和删除),则相应的表称之为动态查找表。否则称之为静态查找表。
2)内查找和外查找
若整个查找过程都在内存进行,则称之为内查找;反之,若查找过程中需要访问外存,则称之为外查找。
平均查找长度(ASL):所有查找过程中进行关键字的比较次数的平均值
ASL=∑i=1-n PiCi(Pi查找第i个元素的概率,Ci查找第i个元素的查找长度)
ASL的数量级就直接反应了查找算法时间复杂度
顺序查找:
顺序查找又称线性查找,通常用于线性表。其算法思想为,从头到尾挨个遍历,反过来也行
算法分析
a.查找成功的情况:最好的情况比较1次,最坏的情况比较n次
查找成功时的平均查找长度=(1+2+…+n)/n=(n+1)/2
b.查找失败时的查找长度=(n+1)
c.如果查找成功和不成功机会相等,顺序查找的平均查找长度为
((n+1)/2+(n+1))/2 =3/4(n+1)
在递增有序的顺序表中查找
)算法分析
a.查找成功的平均查找长度=(n+1)/2
b.查找失败的平均查找长度=(n+1)/2
c.如果查找成功和不成功机会相等,该算法的平均查找长度为((n+1)/2+(n+1)/2)*1/2 = (n+1)/2