📜  门| GATE-CS-2017(Set 1)|第57章

📅  最后修改于: 2021-07-02 17:54:02             🧑  作者: Mango

设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是正确的。
这个问题的测验