查看我的测试数据结构我注意到了一些事情,有人请帮助和回答,在最小堆(优先级队列)中搜索最大密钥的平均时间成本(大O)是多少,它是O(log N)还是O(N)?
答案 0 :(得分:1)
在最小堆中搜索最大元素是O(N)
。
你必须到树的最低层(最多一半的孩子)并检查它们中的每一个,因为它们彼此没有特定的顺序。
这需要检查N/2
个节点(假设您使用标准算法查找最大值)O(N)
。
如果您有兴趣在堆中找到最大元素,则可以使用最大堆。如果内存不是一个大问题,你可以使用最大堆和最小堆,这将允许你O(1)
获得最大和最小元素。