【发布时间】:2011-04-11 16:49:17
【问题描述】:
基数排序从租用有效位到最高有效位对数字进行排序。 我有以下情况:
我的字母是英文字母,因此我的“数字”是英文字符串。这些字符串的字符从左到右一次显示一个。也就是说,首先显示所有字符串的最高有效数字,依此类推。在任何阶段,我都会有一组经过排序的 k 个字符的长字符串。此时,每个字符串都会显示一个字符。我想对新的字符串集进行排序。我如何在不从头开始的情况下有效地做到这一点?
例如,如果我有以下排序集 { for, for, sta, sto, sto }
在每个字符再显示一个字符后,集合是 { form, fore, star, stop, stoc }
新的排序集应该是 {fore, form, star, stoc, stop }
我希望在添加每个新字符后复杂度为 O(n),其中 n 是集合的大小。
【问题讨论】:
-
这听起来完全等同于 MSD 基数排序 (en.wikipedia.org/wiki/…)。
-
@Alexey 不同之处在于后面可以显示更多的数字,所以它是一种在线算法,而对于 MSD 基数排序,应该事先提供完整的数字
-
对。就好像你总是多一个数字要排序,所以我同意“完全等价”并不完全正确。
标签: algorithm string sorting radix-sort