[英]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.