设A为31个数字的数组,由0的序列和1的序列组成。问题是通过探测A中最小的位置来找到最小的索引i,以使A [i]为1。由最佳算法执行的探针的最坏情况是________。
注意:此问题显示为数值答案类型。
(A) 2
(B) 3
(C) 4
(D) 5答案: (D)
说明:解决此类问题的最佳方法是使用二进制搜索。通过将搜索间隔重复除以一半来搜索排序后的数组。从覆盖整个数组的间隔开始。如果搜索键的值小于间隔中间的项目,则将间隔缩小到下半部分。否则将其缩小到上半部分。
查找中间元素
- 中= 1吗?
- 中间> 1吗?(在此不可能)
- 是中值<1吗?
相应地,此问题的最坏情况将是数组末尾的1,即00000…..1或1…….0000。这将花费log n次最坏的情况。
n = 31,因此log 2 31 = 5。
因此,选项D是正确的。
这个问题的测验