如何解决什么是buildHeap的Big-O运行时?
我在尝试找到Big-O运行时遇到问题。它通过调用insert函数将元素插入到堆中来构建堆。
buildHeap(A)
h = new empty heap
for each element e in A
h.insert(e)
此版本的buildHeap的Big-O运行时是什么?
解决方法
这样写,对于典型的二进制堆,它将是O(n log n)
;您一次插入一个,每次插入为O(log n)
。有优化的方法可以在n
的时间内从O(n)
个元素一次构建一个所有元素数组的堆(称为“堆”操作),但是不能通过重复的单元素插入来完成
big-O可能会根据堆的类型而变化; some variant heap designs have O(1)
insertion,当然还有其他因类型而异的折衷方案,例如内存碎片,实现的复杂性,每次操作的固定成本较高等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。