1　常用查找算法平均查找长度的计算方法1. 1　顺序查找法平均查找长度顺序查找法要求查找表顺序存储或链式存储。 顺序查找的过程为:从表的一端开始,依次将表中元素关键字与给定的值比较,如果表中某个记录的关键字值与给定值相等,则查找成功;若到表的另一端后,仍然没有找到关键字与给定值相等的记录,则查找失败。若查找表有 n 个记录,且采用顺序查找法查找一个记录,则在等概率情况下查找成功时的平均查找长度为第 32 卷 第 4 期2011 年 12 月　　　　　　　　渤海大学学报( 自 然科学版)Journal of Bohai University( Natural Science Edition)　　　　　　　　Vol. 32,No. 4Dec. 2011 　　　　　　　　　ASLsucc =1n∑ni = 1i =1n×n( n + 1)2=n + 12(2)若设监视哨,则在等概率情况下查找失败时的平均查找长度为　　　　　　　　　　　　　　　　　ASLfail = n +1(3)若不设监视哨,则在等概率情况下查找失败时的平均查找长度为　　　　　　　　　　　　　　　　　　ASLfail = n(4)若查找表为有序表,则在等概率情况下查找成功时的平均查找长度与无序表相同,查找失败时的平均查找长度为1n +1(∑　　　　　　　　　ASLfail =ni = 1i + n) =n2+nn + 1(5)1. 2　二分查找法平均查找长度二分查找法要求查找表按顺序存储,且表中记录按关键字有序。 二分查找的过程为:首先确定查找表中点位置,然后用待查值与查找表中间位置上记录的关键字值比较,若相等, 则查找成功;否则, 若待查值小,则在查找表的前半部分继续进行二分法查找,否则在查找表的后半部分继续进行二分法查找。 重复上述的过程,直到查找成功或失败。若查找表有 n 个记录,且采用二分查找法查找一个记录,则在等概率情况下查找成功时的平均查找长度为　　　　　　　　　　　　　　ASLsucc =1n∑ni = 1ci(6)其中,ci 为第 i 条记录在二分查找判定树中的层数。在等概率情况下查找失败时的平均查找长度为　　　　　　　　　　ASLfail =1n +1(∑ni = 1αili +∑ni = 1βiri)(7)其中,li 是第 i 条记录在二分查找判定树中的层数,若该结点的左孩子为空,则 αi = 1,否则 αi = 0;ri是第 i 条记录在二分查找判定树中的层数,若该结点的右孩子为空,则 βi =1,否则 βi =0。例如,对给定的 11 个数据元素的有序表(2,3,10,15,20,25,28,29,30,35,40) ,采用二分查找,其二分查找判定树如图 1 所示。图 1　二分查找判定树等概率情况下查找成功的平均查找长度为　　　　　　　　　ASLsucc =1 ×1 +2 ×2 +3 ×4 +4 ×411=3311=3等概率情况下查找失败的平均查找长度为　　　　　　　　　ASLfail =3 ×4 +4 ×812=4412=1131. 3　在二叉排序树上查找的平均查找长度二叉排序树的中序遍历序列是一个按关键字递增的有序序列。 在二叉排序树上进行查找, 是一个从根结点开始,沿某一个分支逐层向下进行比较判断是否相等的过程。 即, 当二叉排序树不空时, 首先将给定值与根结点关键字值比较,若相等,则查找成功;否则,根据给定值与根结点关键字之间的大小关系,在453 　　　　　　　　　　　　　　　　　　　渤海大学学报( 自 然科学版) 　　　　　　　　　　　　　　　　第 32 卷 左子树或右子树上继续进行查找,直到找到,或左子树或右子树为空。 由查找过程可知, 在二叉排序树上进行查找,若查找成功,则是走了一条从根结点到待查记录的路径;若查找失败,则是走了一条从根结点到某个叶子的路径。若查找表有 n 个记录,在二叉排序树上查找一个记录,则在等概率情况下查找成功时的平均查找长度为　　　　　　　　　　　　ASLsucc =1n=∑ni = 1ci(8)其中,ci 为第 i 条记录在二叉排序树中的层数。在等概率情况下查找失败时的平均查找长度为　　　　　　　　　　　　ASLfail =1n +1(∑ni = 1αili +∑ni = 1βiri)(9)其中,li 是第 i 条记录在二叉排序树中的层数,若该结点的左孩子为空, 则 αi = 1, 否则 αi = 0;ri是第 i条记录在二叉排序树中的层数,若该结点的右孩子为空,则 βi =1,否则 βi =0。例如,输入一个正整数序列(53,17,12,66,58,70,87,25,56,60) , 按次序构造的二叉排序树如图 2 所示。图 2　二叉排序树在等概率情况下查找成功的平均查找长度为　　　　　　　　　ASLsucc =1 ×1 +2 ×2 +3 ×4 +4 ×310=2910在等概率情况下查找失败的平均查找长度为　　　　　　　　　　　ASLfail =3 ×5 +4 ×610=39111. 4　散列查找法平均查找长度散列表的查找过程和造表过程一致。 查找过程为:对于待查值, 计算散列地址, 若散列地址内为空标记,则查找失败;若待查值与该地址内记录关键字相等,则查找成功。 否则, 求下一地址, 直至散列地址为空标记,或已搜索了表中的所有单元( 查找不成功) ,或待查值与该地址内记录关键字相等( 查找成功) 为止。 决定散列表平均查找长度的因素主要有散列函数、处理冲突的方法和查找表记录数。若查找表有 n 个记录,散列函数为 H( k) = k%p,采用线性探测再散列法处理冲突,则等概率条件下查找成功时的平均查找长度为　　　　　　　　　　　　　　ASLsucc =1n∑ni = 1ci(10)其中,ci 为查找第 i 条记录的比较次数。等概率条件下查找失败时的平均查找长度为　　　　　　　　　　　　　ASLfail =1p∑pi = 1ci(11)其中,ci 为从散列地址 i 开始线性探测,直到散列地址为空标记时的探测次数。例如,若哈希表的地址范围为 0 ~17,散列函数为:H( K) = K%16, 用线性探测再散列法处理冲突, 对关键字序列(10,24,32,17,31,30,46,47,40,63,49) ,散列表如表 1 所示。553第 4 期　　　　　　　　　　　秦玉平1,王丽君2,刘　伟3:查找算法平均查找长度的计算方法 　　　　　　　　　　　 表 1　散列表散列地址关键字成功比较次数失败比较次数0uF　梃汉媪\-行贩墘Z+挝烟p媪\-　骀贩挝烟puF　梃行　骀贩墘ZuF　梃汉媪\-行　rD　骀贩12345678910111213141516173217634924401030314647116312111335432111143211198　　等概率情况下查找成功时的平均查找长度为　　　　　　　ASLsucc =1 +1 +6 +3 +1 +2 +1 +1 +1 +3 +311=2311等概率情况下查找失败时的平均查找长度为　　　ASLfail =5 +4 +3 +2 +1 +1 +1 +1 +4 +3 +2 +1 +1 +1 +9 +816=4716若查找表有 n 个记录,散列函数为 H( k) = k%p,采用链地址法处理冲突,则查找成功时的平均查找长度为　　　　　　　　　　　　　　ASLsucc =1n∑ni = 1ci(12)其中,ci 为查找第 i 条记录的比较次数。对用拉链法求查找失败时的平均查找长度有两种观点:一种认为比较到空指针算失败,等概率条件下查找失败时的平均查找长度为　　　　　　　　　　　　　　　ASLfail =p + np(13)另一种认为只有和关键字比较才计算比较次数,而和空指针比较不计算,等概率条件下查找失败时的平均查找长度为　　　　　　　　　　　　　　　ASLfail =np(14)例如,若哈希函数 H( k) =3K % 11, 散列地址空间为 0 ~ 10, 对关键字序列(32,13,49,24,38,21,4,12) 按链地址法解决冲突。 散列表示意图如图 3 所示。图 3　散列表示意图查找 4、12、49、13 和 32 时均比较一次,查找 38、24 和 21 时均比较 2 次, 等概率情况下查找成功时的平均查找长度为　　　　　　　　　　　　ASLsucc =5 ×1 +3 ×28若认为比较到空指针算失败,则哈希地址 0、2、5、7、9 和 10 均比较1 次失败,哈希地址1 和 3 均比较2次失败,其余哈希地址均为比较 3 次失败,因此,等概率情况下查找失败时的平均查找长度　　　　　　　　　　　ASLfail =6 ×1 +2 ×2 +3 ×311若认为只有和关键字比较才算比较次数,而和空指针比较不计算,则等概率情况下查找失败时的平均查找长度为=118=1911653 　　　　　　　　　　　　　　　　　　　渤海大学学报( 自 然科学版) 　　　　　　　　　　　　　　　　第 32 卷 　　　　　　　　　　　　　　　　ASLfail =8112　结束语平均查找长度是判断查找方法的一个重要指标,本文给出了顺序查找法、二分查找法、二叉排序树查找法和散列查找法的平均查找长度的计算方法,每种算法包括查找成功和查找失败平均查找长度的计算,并通过实例进行了解析,为学习者学习和掌握查找算法提供了帮助,同时为应用者选择查找算法提供了依据。参考文献:〔1〕 秦玉平,马靖善. 枟数据结构( C 语言版) 枠〔 M〕 . 北京: 清华大学出版社,2005.〔2〕 严蔚敏,吴伟民. 枟数据结构枠( C 语言版) 枠〔 M〕 . 北京: 清华大学出版社,1997.〔3〕 李春葆. 枟数据结构考研指导枠〔 M〕 . 北京: 清华大学出版社,2003.〔4〕 李春葆等. 枟数据结构程序设计题典枠〔 M〕 . 北京: 清华大学出版社,2002.〔5〕 李春葆等. 枟数据结构习题与解析( C 语言篇) 枠〔 M〕 . 北京: 清华大学出版社,2002.〔6〕 徐士良. 枟实用数据结构枠〔 M〕 . 北京: 清华大学出版社,2000.〔7〕 徐孝凯. 枟数据结构辅导与提高实用教程枠〔 M〕 . 北京: 清华大学出版社,2003.〔8〕 严蔚敏,吴伟民. 枟数据结构题集( c 语言版) 枠[ M] . 北京: 清华大学出版社,2008.Calculations of search algorithms for average search lengthQIN Yu - ping1, WANG Li - jun2,LIU Wei3(1. College of Engineering, Bohai University, Jinzhou 121013, China;2. Institute of College Computer Science, Bohai University, Jinzhou 121013, China;3. Tourism college, Bohai University , Jinzhou 121013,China)Abstract:The commonly - used calculations are provided for search algorithms for average search length,including the successful calculations and the unsuccessful ones. The calculations are illustrated by detailed exam-ples for the reference of learners and users.Key words : search; average search length; equiprobability753第 4 期　　　　　　　　　　　秦玉平1,王丽君2,刘　伟3:查找算法平均查找长度的计算方法 　　　　　　　　　　　 ...