【问题标题】:Sort a string list: Move or exchange items only对字符串列表进行排序:仅移动或交换项目
【发布时间】:2011-01-16 14:26:46
【问题描述】:

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

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

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

我怎么能这样做?我的想法是用一个循环遍历所有项目,然后像这样:

  1. lastFirstLetter := Copy(CurrentItem, 1, 1)
  2. 转到下一项
  3. currentFirstLetter := Copy(CurrentItem, 1, 1)
  4. 如果 ord(currentFirstLetter)

用这两种方法对 StringList 进行排序的最快方法是什么?顺便说一下sort方法和sorted属性我不能用。

【问题讨论】:

  • 标记为“家庭作业”(听起来是这样),因为它会影响您得到的任何答案。考虑到您应该为自己的教化制定实际的解决方案。祝你好运。
  • 我在学校既没有计算机科学,也没有学习这个。这只是我的爱好。但现在我必须接受你将我的问题标记为“作业”......
  • 我为错误标签道歉。感谢您的澄清...删除:-)
  • 没问题,感谢您的快速更正:)

标签: delphi sorting pascal tstringlist


【解决方案1】:

您提供两种方法:(1) Swap 和 (2) Exchange。

还有第三种方法:

(3) 保留一个指向字符串的指针的 TList 并对指针进行排序。

此方法会将您的所有字符串留在原处,并且可能更快。

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

【讨论】:

    【解决方案2】:

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

    我认为所有这些算法都只使用“移动”,除了堆和只使用“交换”的快速排序

    【讨论】:

    • 非常感谢!可能每个程序员都知道这个网站,但我不知道 :D 这个网站很棒!
    猜你喜欢
    • 2015-03-26
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    相关资源
    最近更新 更多