0

如果您需要對項目列表進行排序,但編程語言不會促成這種情況,那麼執行此操作的好方法是什麼?這是假設但值得提問。當語言沒有功能時,按字母順序排列項目列表?

感謝

+1

這不是一個假設性的問題:有語言,不帶內置 - 能夠對項目列表進行排序。 – 2010-12-05 18:03:55

回答

3

兩個部分的問題:

  • 如何排序
  • 怎樣應用這個英文字母一般(又名辭書排序)排序。

的兩種一般類型的排序,其最適合於字母排序爲:

比較排序更爲常見(部分原因是它們的排序方式更一般化,部分原因是因爲將基數排序應用於變長字符串與固定寬度排序相比稍微繁瑣)。有許多可供選擇的權衡,但都將兩個項目的實際比較視爲與排序算法本身分開的「黑匣子」。

所以剩下的功能需要的是詞典對比。比較兩個字符串的方法是依次查看每個字符,直到找到第一個字符串不同的地方,而如果此字符爲「less」,則左邊的字符串爲「less」。如果你沒有發現差異,那麼這些字符串的長度是相同的(在這種情況下它們是相等的),或者它們不是(在這種情況下,較短的一個是「較少」)。

如果您的字符集是ASCII,那麼按字母順序比較字符(區分大小寫或不區分大小寫)非常容易。如果您的字符集是完整的Unicode,那麼您可能需要語言支持或第三方庫,或者需要非常大的字符屬性表來獲取所需的字母順序。

0

使用Trie =)

+1

我沒有降低你的評價,但是Trie在大數據方面很有用,用於最小化數據大小,找到一些字符串更好地對它們進行排序,即你有一個1000條目的列表,每個字符串的長度至少爲10,你的Trie深度爲10,中間的每個節點都有一個'10'子節點,那麼爲了搜索一個字符串,你應該在'100'檢查周圍進行搜索,但是如果你按照QS的方式對它進行排序,你可以用`10 `檢查,搜尋的複雜性並不像Trie那樣困難。 – 2010-12-05 17:27:37

0

的步驟是相同的​​寫任何排序算法。創建一個比較函數。然後使用什麼排序算法是適當的,在大多數情況下是快速排序。對於比較功能,您將不得不爲每個字母分配一個數字值,然後按照等級對這些字母進行比較。這會給你一個書法排序,但那是我認爲你的意思任何方式。

0

基本上,您的問題的答案是瞭解排序如何工作。喬納森Shewchuk的video lectures是一個很好的參考。

給你三個小時,你的基本面是正軌。 :)