我们有以下数组:
[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/