一 静态查找:
(一)顺序查找
(1)过程:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功;反之,直到第一个记录,其关键字和给定值比较都不相等,则表明表中没有要查找的记录,查找不成功。
(2)性能分析:
在等概率(每个记录的查找概率相等)情况下:
查找成功的平均查找长度:1/2(n+1)。
查找失败的平均查找长度:(n+1)。
假设查找成功和失败的可能性相同:则顺序查找的平均查找长度为:3/4(n+1)。
(3)优缺点:
缺点:平均查找长度较大,特别是n很大时,查找效率较低。
优点:算法简单且适应面广。
(二)折半查找(又称二分查找,binary search)(熟记算法)
(1)过程:以处于中间位置记录的关键字和给定值比较,若相等,则查找成功;若不等,则缩小范围,直至新的区间中间位置记录的关键字等于给定值或者查找区间的大小小于零(表明查找不成功)为止。
(2)性能分析如下:
查找成功时,折半查找的平均查找长度为:log2(n+1)-1
(3)优缺点:
优点:查找效率比顺序查找高。
缺点:折半查找只适应于有序表,且限于顺序存储结构。