我有一個字符串文件,我必須按照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
如果你必須創建你自己的功能。比如,你可以給這封信分配一個數字。在某些語言中有這樣的標準功能。 –