本文共 1251 字,大约阅读时间需要 4 分钟。
折半查找判定数及平均查找长度
折半查找的过程看,可用二叉树来描述,二叉树中的每个结点对应有序表中的一个记录,结点中的值为该记录在表中的位置。通常称这个描述折半查找二叉树的过程称为折半查找判定树。 (1)在长度为10的有序表中进行折半查找,不论查找哪个记录,都必须和中间记录进行比较,而中间记录为 (1+10)/2 =5 (注意要取整) 即判定数的的根结点为5,如图7-2(a)所示。 (2)考虑判定树的左子树,即将查找区域调整到左半区,此时的查找区间为[1,4],那么中间值为(1+4)/2 =2 (注意要取整) ,所以做孩子根结点为2,如图7-2(b)所示。 (3)考虑判定树的右子树,即将查找区域调整到右半区,此时的查找区间为[6,10],那么中间值为(6+10)/2 =8 (注意要取整) ,所以做孩子根结点为8,如图7-2(c)所示。 1.折半查找是一棵二叉排序树,每个根结点的值都大于左子树的所有结点的值,小于右子树所有结点的值。 2.折半查找判定数中的结点都是查找成功的情况,将每个结点的空指针指向一个实际上不存在的结点————外结点,所有外界点都是查找不成功的情况,如图7-2(e)所示。如果有序表的长度为n,则外结点一定有n+1个 折半查找判定数中,某结点所在的层数就是即将要比较的次数,整个判定树代表的有序表的平均查找长度即为查找每个结点的比较次数之和除以有序表的 长度。 ASL=(1*1+2*2+3*4+4*3)/10=29/10; 折半查找判定数中,查找不成功的次数即为查找相应外结点与内结点的比较次数。整个判定树代表的有序表的平均查找长度。查找失败时的有序表的平均查找长度即为查找每个外结点的比较次数之和除以外结点的个数。 例如:查找失败时,。长度为10的有序表的平均查找长度为 总结:
成功
: 第一层到最后一层,
层数*对应层数的成功的结点数
累加然后除以
成功的结点总数
失败:
倒数第二层的层数*下一层失败(没有)的结点数
加上
最后一层的层数*下一层失败(没有)的结点数(和已有的结点互补)
然后除以
失败的结点总数
原文链接: https://blog.csdn.net/zhupengqq/article/details/51837908?utm_medium=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.control
看到最后的帮忙
点个赞👍🙏 谢谢,这个对我真的很重要!