给定一个字符串,
是多么有效的方法我已经考虑过使用插入排序对N迭代进行排序,或者排序快速排序,其中数据透视位于第N个位置,但我在分析时间复杂度时遇到了问题。还有其他更有效的方法吗?
解决方案是什么,它不是一个字符串,而是一个小数列表?
答案 0 :(得分:1)
如果您的字符串是ASCII,则可以使用counting-sort样式算法来完成。创建一个包含256个计数器的数组,遍历字符串,并为字符串中找到的每个字符的代码增加一个计数器。现在从零开始走数组,累积到目前为止看到的计数。为角色ch
添加计数器会导致累积结果超过N
,如果字符串已排序,则您知道ch
是n
个字符。此算法为O(N)
,其中N
是字符串中的字符数。这是构建计数数组所需的时间。