【问题标题】:is there any way of sorting an array of string in lexicographically in O(N)?有没有办法在 O(N) 中按字典顺序对字符串数组进行排序?
【发布时间】:2020-06-02 14:47:55
【问题描述】:

有一种使用 strcmp() 和 strcpy() 的方法,但它是 O(n^2) 但有更快的方法吗?

【问题讨论】:

    标签: c arrays string sorting lexicographic


    【解决方案1】:

    在处理数组 if 字符串时,请记住有两个独立的量会通知运行时:您有多少个字符串(我们称之为 n),以及这些字符串有多少个总字符(我们称之为 m )。如果这些值中的任何一个很大,则会增加运行时间。例如,即使只有两个字符串,对包含两个相同字符串且每个长度为 100 万个字符的数组进行排序也需要一段时间。

    如果您有一个固定大小的字母表(例如,只有英文字母和数字),那么您可以通过将所有字符串插入到 trie 中,在 O(m + n) 时间内对字符串数组进行排序,然后对 trie 进行 DFS 以按排序顺序读回它们。您可以使用most-significant character radix sort 实现类似的效果。这些方法比简单的排序算法与strcmp 结合起来要复杂一些,但对于大量长字符串来说要快得多。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      相关资源
      最近更新 更多