【发布时间】:2022-12-08 01:04:24
【问题描述】:
在二进制搜索期间,当目标是: 数组 4 8 12 14 20 24 中的哪些条目与目标进行比较:
一个。 2个
b. 8个
C。 15
回答:
For the target 2 - 12 and 4 are compared to the target
For the target 8 - 12,4 and 8 are compared to the target.
For the target 15 - 12,20 and 14 are compared to the target.
我对这个问题的答案很困惑。谁能给我解释一下?例如,对于目标 2,为什么将 12 和 4 与目标进行比较而不是 12,4 和 8。为什么跳过 8?非常感谢!
【问题讨论】:
-
12,4 是范围。
-
“为什么将 12 和 4 与目标进行比较,而不是 12,4 和 8” 如果代码将 2 与 4 进行比较,发现 2 小于 4,为什么要与 a 进行比较大价值?
-
@Spectric:不,不是。据我了解,这是执行的一组比较。 (不可否认,这个问题似乎在中点处理方面假设了二进制搜索的特定实现......)
-
虽然最后一个答案在我看来是错误的——它应该是 12、20 和 14。(当输入数据没有重复项时,一个好的二进制搜索实现永远不会重复比较。)
-
但如果 12,4 是范围,那么为什么目标 8 是 12,4 和 8?为什么包括8?对于目标 15,为什么将 12 包括在内,而不是将 14,20 和 24 与目标 15 进行比较?
标签: java binary-search