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