二分查找过程可用二叉树来描述:
这样的二叉树称为判定树。
外部结点即查找失败对应的结点,是虚拟的
n个关键字:内部结点为n个,外部结点为n+1个
怎么画判定树?
例如给出11个数据元素的有序表:(2,3,10,15,20,25,28,29,30,35,40)
怎么求成功时与不成功时的平均查找长度?
注意:必须是已经排好序的才能够有判定树(因为利用到了二叉排序)
当n比较大时,将判定树看成内部结点的总数为n=2h-1、高度为h=log2(n+1)的满二叉树(高度h不计外部结点)。树中第i层上的记录个数为2i-1,查找该层上的每个记录需要进行i次比较。
在等概率假设下,二分查找成功时的平均查找长度为:
二分查找的时间复杂度为O(log2n)。