、折半查找。假设有序序列:3,5,21,32,36,39,43,85,93,99。按折半查找算法,回答下列问题(注:不需要编写程序)。(1)查找32需几次比较?
时间: 2024-06-03 17:12:02 浏览: 39
根据折半查找算法,第一次比较将中间元素39与要查找的元素32进行比较,32小于39,因此在序列的左半部分进行查找。第二次比较将左半部分的中间元素21与要查找的元素32进行比较,32大于21,因此在左半部分的右半部分进行查找。第三次比较将右半部分的中间元素36与要查找的元素32进行比较,32小于36,因此在右半部分的左半部分进行查找。第四次比较将左半部分的中间元素32与要查找的元素32进行比较,找到了目标元素。因此查找32需要4次比较。
相关问题
假设有序序列,3,5,211,32,36,39,43,85,93,99.按折半查找法,查找32,39,85,10分别需要几次比较
折半查找法(二分查找)的原理是,对于有序序列,每次取序列的中间值与待查找的值进行比较,缩小查找范围,直到找到目标为止。因此,对于给出的序列,分别查找32、39、85、10需要的次数如下:
查找32:
- 第一次比较,中间值为36,比32大。将序列缩小为3, 5, 211, 32, 36。
- 第二次比较,中间值为211,比32大。将序列缩小为3, 5, 32, 36。
- 第三次比较,中间值为5,比32小。将序列缩小为32, 36。
- 第四次比较,中间值为36,比32大。将序列缩小为32。
- 第五次比较,中间值为32,与目标相等。需要比较5次。
查找39:
- 第一次比较,中间值为36,比39小。将序列缩小为39, 43, 85, 93,99。
- 第二次比较,中间值为85,比39大。将序列缩小为39, 43。
- 第三次比较,中间值为43,比39大。将序列缩小为39。
- 第四次比较,中间值为39,与目标相等。需要比较4次。
查找85:
- 第一次比较,中间值为36,比85小。将序列缩小为85, 93,99。
- 第二次比较,中间值为93,比85大。将序列缩小为85。
- 第三次比较,中间值为85,与目标相等。需要比较3次。
查找10:
- 第一次比较,中间值为36,比10大。将序列缩小为3, 5, 211, 32。
- 第二次比较,中间值为5,比10小。将序列缩小为211, 32。
- 第三次比较,中间值为211,比10大。将序列缩小为32。
- 第四次比较,中间值为32,比10大。将序列缩小为空序列。
- 没有找到目标,需要比较4次。
有序序列:{1,2,3,4,5,6,7,8,10,11,12,13},现对该序列进行折半查找 请画出该序列在折半查找下的比较树/判定树
以下是该序列在折半查找下的比较树/判定树:
```
7
/ \
/ \
/ \
4 11
/ \ / \
/ \ / \
2 5 10 12
/ \ / \ / \ / \
1 3 / \ / \ / \
6 8 9 - - 13
/ \
- -
```
其中,每个节点表示一个比较操作,左子树为比当前元素小的部分,右子树为比当前元素大的部分。比较树/判定树的深度为$log_2n$,其中$n$为序列的元素数量。