2010-02-13 38 views
1

在Delphi/Pascal中,我想按字母順序對TStringList進行排序。但爲此,我只能使用以下兩種方法:排序字符串列表:僅移動或交換項目

移動:將字符串從一個索引位置移動到另一個索引位置,並根據需要移動其他字符串。

交換:交換列表中的兩個字符串,如索引位置所標識的。

我怎麼能這樣做?我有想法要經過一個循環中的所有項目,並以這樣的事:

  1. lastFirstLetter:=複製(CURRENTITEM,1,1)
  2. 去下一個項目
  3. currentFirstLetter:=複製( CURRENTITEM,1,1)
  4. 如果ORD(currentFirstLetter)< ORD(lastFirstLetter),然後交換(lastItem,CURRENTITEM)

什麼是排序用這兩種方法的StringList最快的方法是什麼?順便說一下,我無法使用排序方法和排序後的屬性。

+0

標記爲「家庭作業」(聽起來像是這樣),因爲它會影響你得到的任何答案。考慮到你應該爲自己的教化制定出實際的解決方案。祝你好運。 – bernie

+0

我在學校裏也沒有計算機科學,也沒有學習過。這只是我的愛好。但現在我必須接受你把我的問題標記爲「家庭作業」...... – caw

+1

我對這個mistag表示歉意。謝謝你的澄清...刪除:-) – bernie

回答

1

移動/交換方法是你所需要的。然而,你有很多算法可供選擇!看看這個網站(從快速谷歌搜索)的動畫比較:http://www.sorting-algorithms.com/

我認爲所有這些算法只使用「移動」,除了堆和快速排序只使用「交換」

+0

非常感謝!大概每個程序員都知道這個網站,但我沒有:D該網站是偉大的! – caw

3

你給兩種方法:(1)交換和(2)交換。

還有第三種方法:

(3)保持指向您的字符串和的TList指針進行排序。

此方法將使您的所有字符串保留在原來的位置,並且可能會更快。

查看問題:Best Way To Sort An Array In Delphi和Barry Kelly的接受答案以及其他答案。

+0

謝謝,有用的信息! – caw