algorithm - 这个数组的二分查找需要多少次比较?

标签 algorithm binary-search

我们有以下数组: [4, 13, 25, 33, 38, 41, 55, 71, 73, 84, 86, 92, 97] 对我来说,似乎只需要 3 次比较就可以找到 25 次,因为: 首先我们选择中间元素 55。现在我们进行两次比较:55 = 25? 55 > 25?这些都不成立,所以我们转到数组的左侧。我们得到子数组:[4, 13, 25, 33, 38, 41] 我们再除此得到 25 = 25?是的.. 所以需要 3 次比较才能得到我们的比赛。我的书上说需要进行四次比较才能找到 25 个。这是为什么?

最佳答案

由于左边数组的大小是偶数,所以每个算法都可以选择中间的一个数。因此,比较可能类似于以下 4 比较:

[4, 13, 25, 33, 38, 41, 55, 71, 73, 84, 86, 92, 97]
25 < 55 =>‌ [4, 13, 25, 33, 38, 41]
25 < 33 => [4, 13, 25]
25 > 13 => [25]
25 == 25 => Found.

关于algorithm - 这个数组的二分查找需要多少次比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58543900/

相关文章:

algorithm - 如何在文本中找到相关区域?

algorithm - 如何将 RGB 颜色转换为最接近匹配的 8 位颜色?

algorithm - 为什么 FFT 产生复数而不是实数?

javascript - 如何检查字符串的排列(或部分)是否在列表(字典)中?

java - 如何估计 Encog 使用 Levenberg-Marquardt 算法训练具有特定样本集的特定网络所需的 RAM 量?

c - 二分查找修改

c++ - 如何在没有数组的情况下进行二分查找? C++

c - 如果指定数字位于排序数组的末尾或开头,则二进制搜索函数无法找到它们

binary-search - 二分查找中间值计算

c - 如何在二进制搜索算法中找到倍数