1.输出n11时的判定树并求成功情况下的平均查找长度asl ;
时间: 2024-02-27 07:51:59 浏览: 142
分析二分查找成功时的平均查找长度
为了输出n=11时的折半查找判定树并求成功情况下的平均查找长度,可以按照以下步骤:
1. 首先,我们需要定义一个有序数组arr,用于表示要进行查找的元素集合。在本例中,我们可以定义一个长度为11的数组,如下所示:
```c
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
int n = sizeof(arr) / sizeof(int);
```
2. 接着,我们可以调用折半查找算法进行查找,并计算出平均查找长度ASL。具体实现可以参考前面的示例代码。
3. 最后,我们可以手动绘制折半查找判定树,如下所示:
```
6
/ \
/ \
3 9
/ \ / \
/ \ / \
1 4 8 10
/ / \
/ / \
2 7 11
```
在这个树中,每个节点代表了一个子问题,节点的左子树和右子树分别代表了子问题的左半部分和右半部分。在本例中,根节点6表示整个数组,它的左子树3表示数组的左半部分,右子树9表示数组的右半部分。
在折半查找算法执行的过程中,我们从根节点开始,根据待查找元素与当前节点代表的子问题的中间元素的大小关系,选择左子树或右子树继续查找。如果找到了待查找元素,算法结束;否则,继续在选定的子问题中执行查找操作,直到找到待查找元素或者确定元素不存在为止。
在上述树中,例如要查找元素2,从根节点开始,发现2比6小,因此进入左子树。接着,发现2比3小,进入左子树。最终,在叶节点2处找到了元素2,算法结束。
根据公式ASL = log2(n+1) - 1,可以计算出当n=11时,折半查找成功时的平均查找长度为ASL = log2(12) - 1 = 3.459。
阅读全文