数据结构与算法:折半查找二叉树与二叉排序树性能对比

引入一个例题来说明折半查找二叉树与平衡二叉树的区别:

已知一个长度为16的顺序表,其元素按关键字有序排列,若采用折半查找算法查找一个不存在的元素,则比较的次数至少和至多的情况分别是:

首先,需要知道如何构建一棵折半查找二叉树,因为折半查找要求元素需以有序的顺序表形式进行存储,假设这16个数就是1~16构成的有序序列,构造的折半查找二叉树如下:

右图为将其所有的失败情况进行补充,我们发现,折半查找二叉树是一棵平衡的二叉排序树,要查找一个元素,其查找长度(即关键字对比次数)不会超过树的高度,而对于一棵具有平衡二叉树性质的二叉树,其树高h=log2(n+1)向上取整,因此,折半查找的时间复杂度不会超过O(log2n)

如果是二叉排序树,该案例的情况是一棵单枝树,此时查找失败的查找长度为O(n),n为数高,同时也为节点的个数,这是由于,二叉排序树的建树取决于初始节点是否有序,有序的情况下会形成单枝树,此时查找的性能最差,同时,二叉排序树最好的时间性能同折半查找二叉树,为O(log2n)

回到本题,对于折半查找失败的情况就一目了然了,最好的对比次数为4,最多的对比次数为5,才可以判定查找失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值