对字符串列表进行排序:仅移动或交换项目

时间:2010-02-13 23:25:44

标签: delphi sorting pascal tstringlist

在Delphi / Pascal中我想按字母顺序对TStringList进行排序。但为此目的,我只能使用以下两种方法:

移动:将字符串从一个索引位置移动到另一个索引位置,并根据需要移动其他字符串。

交换:交换列表中的两个字符串,由其索引位置标识。

我怎么能这样做?我有想法通过一个循环来完成所有项目:

  1. lastFirstLetter:= Copy(CurrentItem,1,1)
  2. 转到下一个项目
  3. currentFirstLetter:= Copy(CurrentItem,1,1)
  4. if ord(currentFirstLetter)< ord(lastFirstLetter)然后交换(lastItem,currentItem)
  5. 使用这两种方法对StringList进行排序的最快方法是什么?顺便说一句,我不能使用sort方法和sorted属性。

2 个答案:

答案 0 :(得分:3)

您提供两种方法:(1)交换和(2)交换。

还有第三种方法:

(3)保持TList指向你的字符串并对指针进行排序。

此方法会将所有字符串保留在原来的位置,并且可以更快。

请参阅问题:Best Way To Sort An Array In Delphi和Barry Kelly接受的答案以及其他答案。

答案 1 :(得分:1)

移动/交换方法就是您所需要的。但是你有很多算法可供选择!请查看此网站(通过快速Google搜索)进行动画比较:http://www.sorting-algorithms.com/

我认为所有这些算法只使用'move',除了堆和仅使用'exchange'的快速搜索