有序表数据 do,for,if,repeat,while,其查找成功概率分别为0.2,0.15,0.14,0.03,0.01,回答如下问题: 1)画出对该有序表采用顺序查找和折半查找的判定树。 2)分别计算顺序查找时的查找成功和折半查找时的查找成功的平均查找长度。 3)判定折半查找好还是顺序查找好。
时间: 2024-02-17 21:00:57 浏览: 135
顺序查找和折半查找
3星 · 编辑精心推荐
好的,我可以回答你的问题。
1)对于该有序表,采用顺序查找和折半查找的判定树如下所示:
顺序查找判定树:
```
┌──[do]───┐
┌──[for]───┐ ├──[if]───┐
[do] [for] [if] [repeat]
| | | |
0.2 0.35 0.49 0.52
```
折半查找判定树:
```
┌──[do]───┐
┌──[for]───┐ ├──[if]───┐
┌──[do] [if] [repeat] [while]
[do] [for] | | |
| | 0.14 0.29 0.43
0.2 0.15
```
2)顺序查找时的查找成功的平均查找长度为:
```
ASLs = 0.2*1 + 0.15*2 + 0.14*3 + 0.03*4 + 0.01*5 = 0.885
```
折半查找时的查找成功的平均查找长度为:
```
ASLb = log2(5)/2 = 0.86
```
其中,ASLs表示顺序查找时的平均查找长度,ASLb表示折半查找时的平均查找长度。
3)通过比较ASLs和ASLb,可以发现折半查找的平均查找长度更小,也就是说折半查找比顺序查找更好。因此,对于该有序表,采用折半查找更为适合。
阅读全文