【发布时间】:2014-02-05 00:28:04
【问题描述】:
使用堆排序可以在 Θ(log n) 时间内对多少个元素进行排序?
当我们进行堆排序时,为了构建堆,我们需要 Θ(n) 复杂度,然后进行堆排序 O(nlog n)。我理解这个概念。但是当涉及到我们这里的问题时,我们甚至无法在 Θ(log n) 时间内构建一个 n 个元素的堆。那么考虑输入大小 n 的答案是 O(1) 吗?
我还看到了一个不同的解释,它在考虑输入大小 logn 的情况下得出复杂度为 Θ(log n/log log n)。我也不完全遵循这种方法。那么哪个是正确答案,为什么?
【问题讨论】:
-
有人能告诉我标题如何有意义吗?复杂度是元素数量(输入大小)的函数,你怎么能问,你可以排序多少?这听起来像是在问
f(x)是什么(最大的)x。 PS。我假设“有多少元素”是“有多少元素”。 -
"使用堆排序可以在 Θ(log n) 时间内对多少个元素进行排序?"对我来说没有任何意义。
-
我认为答案是“n”。
-
对列表中的
log(n)元素进行排序是没有用的。n元素列表的最快排序方法采用O(n)并且仅在特殊情况下有效... -
@Codie 我认为答案是
0或1。因为你不能用堆排序比n log n更快地排序,所以也许一些类似零的边界情况输入可以解决问题。
标签: algorithm sorting time-complexity heapsort