java - 字符串的线性时间排序算法?

标签 java algorithm sorting complexity-theory big-o

我有一个字符串数组,每个字符串的长度都不同。例如:

s[0] = "sSWXk"
s[1] = "qCk"
s[2] = "sOQQXPbk"
.
.
.
s[x] = "KVfdQk";

我也知道

n = s[0].length() + s[1].length() + ... + s[x].length()

我需要一个时间复杂度为 O(n) 的排序算法来按字典顺序对这些字符串进行排序,以便(例如)

a < ab < b < bbc < c < ca

有什么建议吗?时间复杂度是算法的本质要求。

最佳答案

有一个数据结构叫做 trie 最适合这个。如果将所有单词插入到 trie 中,然后对 trie 执行 DFS,您将按排序顺序取回单词。这样做也需要时间 O(n),其中 n 是所有字符串中的字符总数。

由于我认为这是家庭作业,所以我将把如何实现 trie 的细节作为练习。 :-)

希望这对您有所帮助!

关于java - 字符串的线性时间排序算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11003606/

相关文章:

c++ - 在结构中为前 5 个创建最高值的索引

java - 是否可以使用 NDK 在 Android 中实现原始套接字?

java - 如何调用基类方法?

java - 将包含 JSON 数组的 JSONArray 对象解析为 JSON 数组列表

Python:提取 GLGCM 特征

javascript - 一步减少和排序对象数组

arrays - 排序中的 Swift For 循环枚举不同

java - 无法从 byte[] 转换为 byte

algorithm - 生成随机列联表的有效方法?

c++ - 数组检查越界