为什么对字符串进行排序的时间复杂度是O(n log n)?

27
可能是重复问题: Big O的简明英文解释 在一个编程谜题的答案中,它说“对一个字符串进行排序需要O(n log n)的时间”。这是怎么推导出来的?
有没有关于Big O资源的好参考链接?

你是指“对字符串进行排序”吗?你是指对一组字符串进行排序吗? - jjnguy
2
或者是对字符串中的字符进行排序.. - Goran Jovic
2
它是对字符串中的字符进行排序。我知道什么是大O符号,但不知道为什么在字符串中对字符进行排序是n log n。 - Percy Flarge
2个回答

25
为什么对字符串进行排序的时间复杂度是O(n log n)?
对字符串中的字符进行排序并不一定是O(n log n)。
O(n log n)是比较排序的最优值。它也是许多语言默认排序实现的复杂度。然而,肯定有比这更差的情况。对字符串中的字符进行排序的复杂度取决于您选择的解决此任务的具体算法。
在某些情况下,可以通过使用非比较排序算法来获得比O(n log n)更好的性能。例如,如果您知道字符串是ASCII字符串,最多有127个不同的字符,您可以使用计数排序,其时间复杂度为O(n)。对于所有字符都在基本多语言平面的Unicode字符串,计数排序也是可行的。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接