二分查找次数是怎么算的啊?如:123456要查找5,要几次啊,这是怎么算的啊?
答案:2 悬赏:0 手机版
解决时间 2021-03-27 11:47
- 提问者网友:沉默的哀伤
- 2021-03-26 12:03
二分查找次数是怎么算的啊?如:123456要查找5,要几次啊,这是怎么算的啊?
最佳答案
- 五星知识达人网友:野味小生
- 2021-03-26 12:08
我举其他的一组例子。我们对一维数组中存放的元素 15 23 38 47 55 62 88 95 102 123 这十个数用二分法查找元素 95 要用到二叉树构建的方法. 如果查找数组元素个数是偶数n=10,那就将(n+1)/2=5.5,这里有向上取整和向下取整两种方法,我用向下取整这种方法解释下。5.5向下取整就是5,所以数组的第五个元素 55 作为二叉树的根节点.这时数组分为了两堆.15 23 38 47和
62 88 95 102 123.还是同样的方法15 23 38 47 这一堆的中间元素是(4+1)/2=2.5向下取整就是元素23,而62 88 95 102 123这一堆本来就是奇数,所以直接将95作为他们的中间元素,此时的左边一堆的中间元素 23 和右边一堆的中间元素 95分别作为刚刚原数组中间元素55这个根节点的左子树和右子树。然后又将元素分成了 15(以23作为中间元素的左边一堆)和38 47(以23作为中间元素的右边一堆) 和62 88(以95作为中间元素的左边一堆) 和102 123(以95作为中间元素的右边一堆)这四堆。分别取四堆的中间元素,15 、38、62、102.其中15和38分别作为节点23的左、右子树,而62和102作为节点95的左、右子树。然后就该是八堆了.但是15只有一个元素所以他就只是叶子节点了,38 47取走38后只剩47所以47作为节点38的子树寄叶子节点,右边62 88取走62后剩88作为62的叶子节点,102 123取走102后只有123作为他的叶子节点。现在要查找95这个元素.第一次访问根节点55,然后第二就可以访问根节点的右子树95节点了.所以只要两次就可以了.
62 88 95 102 123.还是同样的方法15 23 38 47 这一堆的中间元素是(4+1)/2=2.5向下取整就是元素23,而62 88 95 102 123这一堆本来就是奇数,所以直接将95作为他们的中间元素,此时的左边一堆的中间元素 23 和右边一堆的中间元素 95分别作为刚刚原数组中间元素55这个根节点的左子树和右子树。然后又将元素分成了 15(以23作为中间元素的左边一堆)和38 47(以23作为中间元素的右边一堆) 和62 88(以95作为中间元素的左边一堆) 和102 123(以95作为中间元素的右边一堆)这四堆。分别取四堆的中间元素,15 、38、62、102.其中15和38分别作为节点23的左、右子树,而62和102作为节点95的左、右子树。然后就该是八堆了.但是15只有一个元素所以他就只是叶子节点了,38 47取走38后只剩47所以47作为节点38的子树寄叶子节点,右边62 88取走62后剩88作为62的叶子节点,102 123取走102后只有123作为他的叶子节点。现在要查找95这个元素.第一次访问根节点55,然后第二就可以访问根节点的右子树95节点了.所以只要两次就可以了.
全部回答
- 1楼网友:末日狂欢
- 2021-03-26 13:31
俩次
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯