gpt4 book ai didi

delphi - 向 TList 和 TStringList 添加稳定排序的简单方法

转载 作者:行者123 更新时间:2023-12-03 14:42:09 24 4
gpt4 key购买 nike

我使用 TList/TObjectList 和 TStringList(带有关联对象)来执行多种任务,或者按原样使用,或者作为更复杂结构的基础。虽然排序功能通常足够好,但有时我需要执行 stable排序,两个列表都使用快速排序。

实现 TList 和/或 TStringList 稳定排序的最简单方法是什么?我是否必须编写自己的排序例程,或者可以通过使用 TStringListSortCompare/TListSortCompare 的一些巧妙技巧来完成吗?

最佳答案

您必须编写自己的排序例程。

您可以阅读当前的 QuickSort 实现,并编写您自己的稳定版本(例如合并排序或 any other stable variant )。

一些技巧:

  • 如果您确定索引为 <Count,则可以使用快速指针数组 (TList.List[]),而不是较慢的 Items[ ]GetItem():子方法调用和范围检查会减慢执行速度;
  • 比较功能大多数时候是搜索的速度瓶颈 - 因此请注意这部分;
  • 如果您需要速度,请在真实(例如随机)数据上使用真实的分析器 - 但在提高速度之前先确保正确;
  • 从现有的排序实现开始;
  • 为了最大限度地减少堆栈空间,您可以使用临时记录来存储变量并在递归调用之间共享变量。

关于delphi - 向 TList 和 TStringList 添加稳定排序的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7907220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com