【发布时间】:2020-06-02 14:47:55
【问题描述】:
有一种使用 strcmp() 和 strcpy() 的方法,但它是 O(n^2) 但有更快的方法吗?
【问题讨论】:
标签: c arrays string sorting lexicographic
有一种使用 strcmp() 和 strcpy() 的方法,但它是 O(n^2) 但有更快的方法吗?
【问题讨论】:
标签: c arrays string sorting lexicographic
在处理数组 if 字符串时,请记住有两个独立的量会通知运行时:您有多少个字符串(我们称之为 n),以及这些字符串有多少个总字符(我们称之为 m )。如果这些值中的任何一个很大,则会增加运行时间。例如,即使只有两个字符串,对包含两个相同字符串且每个长度为 100 万个字符的数组进行排序也需要一段时间。
如果您有一个固定大小的字母表(例如,只有英文字母和数字),那么您可以通过将所有字符串插入到 trie 中,在 O(m + n) 时间内对字符串数组进行排序,然后对 trie 进行 DFS 以按排序顺序读回它们。您可以使用most-significant character radix sort 实现类似的效果。这些方法比简单的排序算法与strcmp 结合起来要复杂一些,但对于大量长字符串来说要快得多。
希望这会有所帮助!
【讨论】: