所以我和我的朋友在这个问题上意见不一致。它要求在 n 个元素的最大堆中搜索第 7 大元素的时间复杂度?
我认为应该是 O(n),她认为应该是 O(1)。我的逻辑是假设 n 是 7,那么第 7 大元素将是堆中的最后一个元素,所以如果我们考虑最坏的情况,它应该是 O(n)。然而,她说,因为它是一个最大堆,所以找到第 7 个最大的元素应该花费恒定的时间。但是使用她的逻辑,即使是第 50 大元素或第 100 大元素也可以在 O(1) 时间内找到。我们遇到这个问题的书也说解决方案将是 O(logn)。
有人可以告诉我哪个解决方案是正确的吗?