回答
兩個部分的問題:
- 如何排序
- 怎樣應用這個英文字母一般(又名辭書排序)排序。
的兩種一般類型的排序,其最適合於字母排序爲:
- 一個comparison sort,其中所述比較按字典順序比較
- 的MSD radix sort。
比較排序更爲常見(部分原因是它們的排序方式更一般化,部分原因是因爲將基數排序應用於變長字符串與固定寬度排序相比稍微繁瑣)。有許多可供選擇的權衡,但都將兩個項目的實際比較視爲與排序算法本身分開的「黑匣子」。
所以剩下的功能需要的是詞典對比。比較兩個字符串的方法是依次查看每個字符,直到找到第一個字符串不同的地方,而如果此字符爲「less」,則左邊的字符串爲「less」。如果你沒有發現差異,那麼這些字符串的長度是相同的(在這種情況下它們是相等的),或者它們不是(在這種情況下,較短的一個是「較少」)。
如果您的字符集是ASCII,那麼按字母順序比較字符(區分大小寫或不區分大小寫)非常容易。如果您的字符集是完整的Unicode,那麼您可能需要語言支持或第三方庫,或者需要非常大的字符屬性表來獲取所需的字母順序。
有這個非常全面覆蓋維基百科:http://en.wikipedia.org/wiki/Sorting_algorithm
它的通用算法很長的名單,以及他們的優點和缺點的信息。
使用Trie =)
我沒有降低你的評價,但是Trie在大數據方面很有用,用於最小化數據大小,找到一些字符串更好地對它們進行排序,即你有一個1000條目的列表,每個字符串的長度至少爲10,你的Trie深度爲10,中間的每個節點都有一個'10'子節點,那麼爲了搜索一個字符串,你應該在'100'檢查周圍進行搜索,但是如果你按照QS的方式對它進行排序,你可以用`10 `檢查,搜尋的複雜性並不像Trie那樣困難。 – 2010-12-05 17:27:37
的步驟是相同的寫任何排序算法。創建一個比較函數。然後使用什麼排序算法是適當的,在大多數情況下是快速排序。對於比較功能,您將不得不爲每個字母分配一個數字值,然後按照等級對這些字母進行比較。這會給你一個書法排序,但那是我認爲你的意思任何方式。
基本上,您的問題的答案是瞭解排序如何工作。喬納森Shewchuk的video lectures是一個很好的參考。
給你三個小時,你的基本面是正軌。 :)
有互聯網這樣的問題
的上一個really good tool當你還沒有找到它,這裏是一個很好的起點:quicksort
- 1. 按C++語言按字母順序排列對象列表
- 2. 按字母順序排序,然後按字母順序排列
- 3. 按字母順序排列
- 4. 按字母順序排序列表
- 5. 按字母順序排列目錄
- 6. 在垂直列中按字母順序排列項目
- 7. 按字母順序排列單詞列表並按首字母順序篩選
- 8. 按字母順序排列數組列表(波斯語)
- 9. 按字母順序排列PHP排序
- 10. 排序表的順序不按字母順序排列
- 11. 按字母順序排列不包含字母的列表
- 12. 按字母順序排列並顯示目錄列表PHP
- 13. 當列是代碼時按字母順序排序gridview
- 14. SQL - 按字母順序排序的列
- 15. perl - 按數字順序降序排列,然後按字母順序排列
- 16. 按字母順序排列網格項目
- 17. 在Django-Admin中按字母順序排列顯示項目
- 18. 按列排序MySQL行,但不按字母順序排列
- 19. 按數字順序排列數組列表然後按字母排序
- 20. 使用jQuery按字母順序排列列表中的列?
- 21. 排序列表按字母順序排序
- 22. 在java中按字典順序排列(按字母順序)
- 23. 按字母順序排列數組
- 24. 按字母順序排列NSArray
- 25. 按字母順序排列數據
- 26. 按字母順序排列組合框
- 27. 按字母順序排列的PHP is_numeric
- 28. JList按字母順序排列
- 29. 按字母順序排列數組
- 30. 按字母順序排列ArrayList
這不是一個假設性的問題:有語言,不帶內置 - 能夠對項目列表進行排序。 – 2010-12-05 18:03:55