如果我们按升序排列数组,那么我们将得到二进制堆。这个优点有什么缺点吗?如果是,那么原因是什么?
答案 0 :(得分:0)
“按升序排列数组,然后我们将得到二进制堆”。这是对的。
现在,它取决于您使用哪种算法按升序对数组进行排序。最佳排序算法执行复杂度O(NLogN)
。
虽然创建二进制堆的算法Build_Heap
的复杂度为O(N)
。
除非您使用非基于比较的排序方法(例如Counting Sort
),否则创建二进制堆的复杂性将至少为O(NLogN)
,而且至少为O(N^2)
。
所以创建二进制堆的传统方法是有利的。
虽然Counting Sort
需要O(N)
次,但需要额外空间O(N)
,而传统Build_Heap
将创建二进制堆就地