折半查找不成功的平均查找长度怎么算_静态树表查找算法详解

  • Post author:
  • Post category:其他


前面章节所介绍的有关在静态查找表中对特定关键字进行顺序查找、折半查找或者分块查找,都是在查找表中各关键字被查找概率相同的前提下进行的。

例如查找表中有 n 个关键字,表中每个关键字被查找的概率都是 1/n。在等概率的情况,使用折半查找算法的性能最优。

而在某些情况下,查找表中各关键字被查找的概率是不同的。例如水果商店中有很多种水果,对于不同的顾客来说,由于口味不同,各种水果可能被选择的概率是不同的。假设该顾客喜吃酸,那么相对于苹果和橘子,选择橘子的概率肯定要更高一些。在查找表中各关键字查找概率不相同的情况下,对于使用折半查找算法,按照之前的方式进行,其查找的效率并不一定是最优的。例如,某查找表中有 5 个关键字,各关键字被查找到的概率分别为:0.1,0.2,0.1,0.4,0.2(全部关键字被查找概率和为 1 ),则根据之前介绍的折半查找算法,建立相应的判定树为(树中各关键字用概率表示):

5f878b7cc4d0ef70d80d33e73fb82357.png

图 1 折半查找对应的判定树

折半查找查找成功时的平均查找长度的计算方式为:

ASL = 判定树中各结点的查找概率*所在层次

所以该平均查找长度为:



版权声明:本文为weixin_32273747原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。