假定对有序表:(3,4,5,7 , 24, 30, 42, 54, 63,72, 87 , 95 )进行折半查找,试回答下列问题: 1画出描述折半查找过程的判定树; 2若查找元素54 ,需依次与哪些元素比较? 3若查找元素90 ,需依次与哪些元素比较? 4假定每个元素的查找概率相等求查找成功时的平均查找长度。
时间: 2023-09-11 19:09:25 浏览: 1343
好的,我来回答您的问题:
1. 下面是描述折半查找过程的判定树:
```
54?
/ \
30? 87?
/ \ / \
24? 42? 72? 95?
/ \ / \ / \
3? 5? 7? 63? 54?
```
2. 查找元素54时,需要依次与30、87、63进行比较。
3. 查找元素90时,需要依次与54、87进行比较,但因为没有找到,最后返回空。
4. 假设每个元素的查找概率相等,那么成功查找的平均查找长度为:
```
(1/12)*1 + (1/6)*2 + (1/6)*3 + (1/4)*4 + (1/4)*5 = 2.92
```
其中,1/12表示查找第一个元素的概率,需要比较1次;1/6表示查找第二个元素的概率,需要比较2次;1/4表示查找第四个或第五个元素的概率,需要比较4次或5次。
相关问题
假定对有序表:3,4,5,7,24,30,42,54,63,72,87,95,要查找54要与哪些元素比较
如果要查找有序表中的元素54,可以采用二分查找算法。首先需要将要查找的元素54与有序表的中间元素进行比较,即与元素30进行比较。由于有序表是按照从小到大的顺序排列的,因此54大于30,可以排除有序表中的前半部分,只需要在后半部分进行查找。接下来,需要将要查找的元素54与后半部分的中间元素进行比较,即与元素72进行比较。由于54小于72,可以排除有序表的后半部分中比72大的元素,只需要在前半部分进行查找。然后,将要查找的元素54与前半部分的中间元素进行比较,即与元素42进行比较。由于54大于42,可以排除有序表中前半部分比42小的元素,只需要在42后面的元素中进行查找。最后,将要查找的元素54与剩下的两个元素进行比较,即与元素54和63进行比较。由于要查找的元素就是54,查找成功,返回该元素在有序表中的位置。因此,在查找54的过程中,需要与元素30、72和42进行比较。
假定对有序表:3,4,5,7,24,30,42,54,63,72,87,95.。要查找54要与哪些元素比较
如果使用二分查找算法查找54这个元素,首先需要与有序表的中间元素(30)进行比较。由于54大于30,因此需要继续在中间元素的右侧进行查找。接着,需要与右侧子表的中间元素(72)进行比较。由于54小于72,因此需要继续在右侧子表的左侧进行查找。然后,需要与左侧子表的中间元素(42)进行比较。由于54大于42,因此需要继续在左侧子表的右侧进行查找。最后,需要与左侧子表的最后一个元素(63)进行比较。由于54小于63,因此查找结束,找到了元素54。因此,在二分查找算法中,需要与有序表的中间元素进行比较,并依据比较结果选择新的查找区间,直到找到目标元素或者确认目标元素不存在为止。
阅读全文