📜  门| GATE-CS-2017(套装1)|第 57 题

📅  最后修改于: 2021-09-27 06:02:08             🧑  作者: Mango

设 A 是一个由 31 个数字组成的数组,由一串 0 和一串 1 组成。问题是通过探测 A 中的最小位置数来找到最小索引 i,使得 A[i] 为 1。最优算法执行的探测的最坏情况数是________。

注意:此问题显示为数字答案类型。
(一) 2
(乙) 3
(三) 4
(四) 5答案: (D)
说明:解决此类问题的最佳方法是使用二分搜索。通过重复将搜索间隔分成两半来搜索已排序的数组。从覆盖整个阵列的区间开始。如果搜索关键字的值小于区间中间的项,则将区间缩小到下半部分。否则将其缩小到上半部分。

查找中间元素

  • 中 = 1 吗?
  • mid > 1?(这里不可能)
  • 中 < 1 吗?

相应地继续,此问题的最坏情况将是数组末尾的 1,即 00000…..1 或 1….0000。最坏的情况需要log n 时间。
n=31,因此 log 2 31 = 5。

因此,选项 D是正确的。
这个问题的测验