Java Python中collections.Counter()的时间复杂度是多少?

Java Python中collections.Counter()的时间复杂度是多少?,java,python,time-complexity,Java,Python,Time Complexity,返回输出: collection.Counter("bcdefffaa") 由于结果是按值的降序排序的,这是否意味着构建计数器的成本是O(nlogn),而不是O(n) 另外,Java中collections.Counter的等价物是什么 显然取决于实现,但重要的因素是需要接触原始列表的每个元素,这意味着O(n)是一个下限,以及需要将元素插入dict和/或更新dict。 输出中元素的显示与构建计数器的成本无关 如图所示,Counter只是dict的一个子类。构造它是O(n),因为它必须迭代输入,

返回输出:

collection.Counter("bcdefffaa")
由于结果是按值的降序排序的,这是否意味着构建计数器的成本是
O(nlogn)
,而不是
O(n)


另外,Java中collections.Counter的等价物是什么

显然取决于实现,但重要的因素是需要接触原始列表的每个元素,这意味着O(n)是一个下限,以及需要将元素插入dict和/或更新dict。 输出中元素的显示与构建计数器的成本无关

如图所示,Counter只是dict的一个子类。构造它是O(n),因为它必须迭代输入,但对单个元素的操作仍然是O(1)

还要注意的是,它在内部不保留顺序,只是在
\uuuu repr\uuuu
方法中按最常见的输出排序。

它不会首先对字符串排序。这只是字典查找。所以最糟糕的时间复杂度是O(n^2),但这是非常罕见的。通常为O(n)。有关Java,请参阅:
Counter({'f': 3, 'a': 2, 'c': 1, 'b': 1, 'e': 1, 'd': 1})