微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是buildHeap的Big-O运行时?

如何解决什么是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 举报,一经查实,本站将立刻删除。