Python集合计数器:most_common复杂度

Python集合计数器:most_common复杂度,第1张

Python集合计数器:most_common复杂度

从collections.py的源代码中,我们看到,如果不指定返回的元素数,则

most_common
返回计数的排序列表。这是一种
O(nlog n)
算法

如果使用

most_common
返回
k >1
元素,则使用
heapq.nlargest
。这是一个
O(k)+ O((n - k) log k) + O(k logk)
算法,对于一个很小的常量非常有用
k
,因为它本质上是线性的。这一
O(k)
部分来自对初始
k
计数进行堆放,第二部分来自
n -k
heappushpop
方法的调用,第三部分来自对
k
元素的最终堆进行排序。既然
k <= n
我们可以得出结论,复杂度是:

O(n log k)

如果

k = 1
这样的话,很容易表明复杂度是:

上)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5644563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存