获得最小的第N个元素的有效方法

时间:2013-01-20 21:35:53

标签: c# sorting time-complexity

给定一个字符串,

是多么有效的方法
  • 返回其中的第N个最低字符(ASCII明智)?
  • 在其中返回第N个低位字符* s *?

我已经考虑过使用插入排序对N迭代进行排序,或者排序快速排序,其中数据透视位于第N个位置,但我在分析时间复杂度时遇到了问题。还有其他更有效的方法吗?

解决方案是什么,它不是一个字符串,而是一个小数列表?

1 个答案:

答案 0 :(得分:1)

如果您的字符串是ASCII,则可以使用counting-sort样式算法来完成。创建一个包含256个计数器的数组,遍历字符串,并为字符串中找到的每个字符的代码增加一个计数器。现在从零开始走数组,累积到目前为止看到的计数。为角色ch添加计数器会导致累积结果超过N,如果字符串已排序,则您知道chn个字符。此算法为O(N),其中N是字符串中的字符数。这是构建计数数组所需的时间。