使用数组快捷方式形成二进制堆

时间:2016-12-30 06:17:05

标签: c++ arrays data-structures heap binary-heap

如果我们按升序排列数组,那么我们将得到二进制堆。这个优点有什么缺点吗?如果是,那么原因是什么?

1 个答案:

答案 0 :(得分:0)

“按升序排列数组,然后我们将得到二进制堆”。这是对的。 现在,它取决于您使用哪种算法按升序对数组进行排序。最佳排序算法执行复杂度O(NLogN)

虽然创建二进制堆的算法Build_Heap的复杂度为O(N)

除非您使用非基于比较的排序方法(例如Counting Sort),否则创建二进制堆的复杂性将至少为O(NLogN),而且至少为O(N^2)

所以创建二进制堆的传统方法是有利的。

虽然Counting Sort需要O(N)次,但需要额外空间O(N),而传统Build_Heap将创建二进制堆就地