堆排序的运行时间,当所有元素都相同时

时间:2011-11-17 08:58:33

标签: algorithm sorting heap

我们可以说,当大小为n的数组A中的所有元素相同时,堆排序的运行时间为O(n)

- >如果是这种情况,那么O(n)是否是最好的案例运行时间

1 个答案:

答案 0 :(得分:5)

当所有元素相等时,构建堆需要O(n)步。因为当一个元素在比较O(1)之后被添加到堆中时,我们看到它处于正确的位置。

删除根也是O(1),当我们交换尾部和根时,堆属性仍然满足。

所有元素都以O(n)的形式添加到堆中,并在O(n)中删除。所以,是的这个案例中的heapsort是O(n)。我想不出一个更好的案例,所以最好的案例必须是O(n)。

'Heapsorts最好的情况是O(n)'在英语中意味着:存在大小为n的数组,这样heapsort最多需要k * n比较它。这在理论上很好,但在实践中并没有说明heapsort有多好或多快。