Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中按字母顺序和频率排序的时间复杂度是多少?_Python_Algorithm_Sorting_Time Complexity_Big O - Fatal编程技术网

Python中按字母顺序和频率排序的时间复杂度是多少?

Python中按字母顺序和频率排序的时间复杂度是多少?,python,algorithm,sorting,time-complexity,big-o,Python,Algorithm,Sorting,Time Complexity,Big O,以下各项的时间复杂度是多少 word = "abbaa" sortedWord = sorted(sorted(word), key = word.count) 它是O(n^2),因为调用了键函数word。对word中的每个字母进行计数。计算一个字母的频率是O(n),你做了n次。如果首先使用collections.Counter构建频率映射,然后在排序中使用key=frequencies.get,复杂性将是O(n log n),因为实际排序将占主导地位。@kaya3:collections.C

以下各项的时间复杂度是多少

word = "abbaa"
sortedWord = sorted(sorted(word), key = word.count)

它是O(n^2),因为调用了键函数
word。对
word
中的每个字母进行计数。计算一个字母的频率是O(n),你做了n次。如果首先使用
collections.Counter
构建频率映射,然后在排序中使用
key=frequencies.get
,复杂性将是O(n log n),因为实际排序将占主导地位。@kaya3:
collections.Counter(sorted(word))。最常见的(
将是最直接的方法,因为它可以为您处理频率排序(无需自己处理
函数。它可以从最高计数排序到最低计数,但您始终可以调用
.reverse()
,作为
O(1)
步骤撤销该操作(或者对于基本自由的操作,在
reversed
中包装后,在不重新排序的情况下迭代结果)@DYZ内部的
排序
是在按频率排序之前按字母顺序排序。Python的
排序
函数是一种稳定的排序,因此它确实起到了作用;具有相同频率的字母从第一次调用
排序
起将保持其原始相对顺序。@MarkMeyer是的,每个lis调用一次键函数t元素。文档没有指定,但文档也没有指定实际排序的时间复杂度为O(n log n)。@MarkMeyer它确实使用了Timsort,但文档没有指定它使用Timsort。Re:缓存键,实际上是
list.sort
方法,以及“”排序
和排序使用相同的算法;因此在这种情况下,只是文档中缺少信息,而不是故意不指定。