我们可以说,当大小为n的数组A中的所有元素相同时,堆排序的运行时间为O(n)
- >如果是这种情况,那么O(n)是否是最好的案例运行时间
答案 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有多好或多快。