[英]left to right radix sort
基数对从有效数字到最高有效数字的数字进行排序。 我有以下情况:
我的字母是英语字母,因此我的“数字”是英语字符串。 这些字符串的字符一次从左到右显示。 也就是说,所有字符串的最高有效数字都首先显示出来,依此类推。 在任何阶段,我都会有一组k个字符长的字符串进行排序。 此时,每个字符串都显示一个字符。 我想对新的字符串集进行排序。 我如何有效地做到这一点而无需从头开始?
例如,如果我有以下排序集{for,for,sta,sto,sto}
并且在每个字符都被揭示之后,集合是{形式,前部,星号,停止,stoc}
新的排序集应为{fore,form,star,stoc,stop}
我希望添加每个新字符后的复杂度为O(n),其中n是集合的大小。
如果要在O(n)中执行此操作,则必须以某种方式跟踪“组”:
for, for | sta | sto, sto
在此组中,您可以根据字符串的最后一个字符对字符串进行排序,以保持对集合的排序。
可以通过多种方式存储组。 乍一看,我会建议您记住组开始/结束的偏移量。 但是,这会占用额外的内存。
另一种可能是将字符串存储在某种前缀树中 ,这很自然地对应于“一个又一个字符的添加”,但是我不知道这是否适合您的应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.