我有一个字符串文件,我必须按照O(nlog(n))或更少的时间以字典顺序对它们进行排序。我知道排序算法并将它们用于排序数字。但我不知道如何使用快速排序或任何其他排序算法来排序字符串。 请提供未在方法中构建的算法。如何按字典顺序对字符串进行排序?
回答
对于字符串,共同建议,可能是radix sort
它严格取决于字母表这是用于形成串并O(kN)
时间复杂度,其中n
是数密钥和k
是平均密钥长度。请注意,这可能会产生混淆与O(n log n)
来比较这(其中n
意味着输入元素数)
所以 - 较小的是k
,更好的是基数排序方法。这意味着,对于较小的基数,它会更有效。我只想引用扩展的解释(无需改换):
基数效率的排序比其他排序算法0的主题是有点棘手,并受到相当多的 误解。基数排序是否等效,是否比基于比较的最佳算法效率更低或效率更高取决于所作假设的细节。基数排序效率 对于n个具有小于或等于数字的键的O(d·n)。有时d是 作为一个常数表示,这将使得基数排序比基于比较的最佳排序 算法更好(对于 足够大的n),这些算法都需要进行O(n·log(n))个比较。 但是,一般来说d不能被认为是一个常数。特别是,在普通(但有时是隐含的)假设下,所有密钥都是不同的,所以d必须至少为log(n)的顺序,这给出 最好(具有密集打包的密钥)时间复杂度为O (N·的log(n))。那 似乎使得基数排序与最好的基于比较的排序(如果密钥远远长于 log(n))相比最高效。
此外,该算法会使用一些额外的空间(与价值空间复杂O(k+n)
) - 因此,你应该意识到这一点(不喜欢,不会使用额外的空间比较算法)什么语言你
感谢您的好评。我希望这是我的解决方案。让我试试/ – vivek
- 1. 如何按照字典顺序对结构中的字符串进行排序?
- 2. 如何按字典顺序对列表进行排序?
- 3. 按字母顺序对字典进行排序
- 4. 按任意顺序对字符串进行排序
- 5. 如何按照字母顺序对空字符串进行排序WPF GridView?
- 6. C++:按字符串对字符串进行排序,然后按字母顺序排序
- 7. 字符串进行排序按字母顺序算法的c#
- 8. 如何按字母顺序对字典对象排序NSArray?
- 9. 按字母顺序排序字符串
- 10. 排序字符串按字母顺序
- 11. 如何按字典顺序对存储在字符串中的数字进行排序?
- 12. 按字母顺序对NSString中的字符进行排序
- 13. 按字母顺序在varchar2中对字符进行排序
- 14. 按照升序和字母顺序对单个字符串进行排序
- 15. 如何按字母顺序排序字符串的字符?
- 16. Java字符串排序(但不完全按字典顺序)
- 17. 如何以数字方式对字符串数组进行排序然后按字母顺序排序?
- 18. 按键值对字典进行排序
- 19. 如何在按字典顺序对字符串进行排序时忽略/跳过'n'元素
- 20. 使用PHP按字母顺序对html字符串进行排序
- 21. 按字母顺序对字符串进行排序,但首先使用目录
- 22. 基于字符串属性按字母顺序对数组进行排序
- 23. AWK按字符串长度对字符串进行排序
- 24. 如何对字典进行排序?
- 25. 如何从get_term_children按字母顺序对id进行排序?
- 26. 如何按升序对字典的多个值进行排序?
- 27. 如何使用字节顺序按字典顺序对结构进行重新排序?
- 28. 按特定字符串顺序对对象的Javascript数组进行排序?
- 29. 我们可以按字母顺序在ios中对字典进行排序吗?
- 30. 在Swift中对字符串字典进行排序
必须使用?在PHP中简单的'sort'函数将按字母顺序对字符串进行排序。 –
任何语言!我只想知道算法或方法。 – vivek
如果你必须创建你自己的功能。比如,你可以给这封信分配一个数字。在某些语言中有这样的标准功能。 –