有没有办法在 O(N) 中按字典顺序对字符串数组进行排序?
is there any way of sorting an array of string in lexicographically in O(N)?
有一种使用 strcmp() 和 strcpy() 的方法,但它是 O(n^2) 但有没有更快的方法?
在处理字符串数组时,请记住有两个单独的量会通知运行时:您有多少个字符串(我们称之为 n),以及这些字符串总共有多少个字符(我们称之为那个米)。如果这些值中的任何一个很大,都会增加运行时间。例如,即使只有两个字符串,对包含两个相同字符串(每个字符串的长度均为一百万个字符)的数组进行排序也需要一段时间。
如果你有一个固定大小的字母表(比如,只有英文字母和数字),那么你可以通过将所有字符串插入 trie and then doing a DFS over the trie to read them back in sorted order. You can achieve a similar effect by using a most-significant character radix sort.这些方法比简单的排序算法与 strcmp
相结合要复杂一些,但对于大量长字符串来说要快得多。
希望对您有所帮助!
有一种使用 strcmp() 和 strcpy() 的方法,但它是 O(n^2) 但有没有更快的方法?
在处理字符串数组时,请记住有两个单独的量会通知运行时:您有多少个字符串(我们称之为 n),以及这些字符串总共有多少个字符(我们称之为那个米)。如果这些值中的任何一个很大,都会增加运行时间。例如,即使只有两个字符串,对包含两个相同字符串(每个字符串的长度均为一百万个字符)的数组进行排序也需要一段时间。
如果你有一个固定大小的字母表(比如,只有英文字母和数字),那么你可以通过将所有字符串插入 trie and then doing a DFS over the trie to read them back in sorted order. You can achieve a similar effect by using a most-significant character radix sort.这些方法比简单的排序算法与 strcmp
相结合要复杂一些,但对于大量长字符串来说要快得多。
希望对您有所帮助!