假定对有序表:(3,4,5,7 , 24, 30, 42, 54, 63,72, 87 , 95 )进行折半查找,试回答下列问题: 1画出描述折半查找过程的判定树; 2若查找元素54 ,需依次与哪些元素比较? 3若查找元素90 ,需依次与哪些元素比较? 4假定每个元素的查找概率相等求查找成功时的平均查找长度。
时间: 2023-09-11 13:09:25 浏览: 819
请写出对有序表进行折半查找的非递归算法.doc
好的,我来回答您的问题:
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次。
阅读全文