繁体   English   中英

python 的 heapq.heapify() 在接近堆的列表上是否更快?

[英]Is python's heapq.heapify() faster on a list that is close to a heap?

正如标题所说,我想知道 python 的 heapq.heapify() 是否会在接近堆的列表上更快地工作,或者它是否在每个列表上逐个元素地执行整个操作?

我正在讨论使用 heapify() 的频率。

显而易见的答案是肯定的。 如果你提供一个排序数组来heapify它根本不需要执行任何交换。 如果您提供反向排序的数组,它将必须执行最大数量的交换。

也就是说,在将数组传递给heapify之前对其进行预排序没有任何好处,因为总时间(即分析和排列数组,加上heapify时间)将超过heapify完成其工作所需的最长时间,即使是最坏的-案例安排。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM