繁体   English   中英

左至右基数排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM