gpt4 book ai didi

algorithm - 快速过滤的数据结构(Delphi)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:08 24 4
gpt4 key购买 nike

我正在优化 Delphi 应用程序的一部分,其中经常使用不同的条件过滤对象列表。对象保存在 TObjectList 结构中,每个过滤器通常只选择整个集合的很小一部分(例如 1%)。对象总数可以在 100k 范围内,并且在计算期间主集不会改变。尽管过滤器仅适用于少数属性,但无法以优化所有可能条件的方式对列表进行排序。

我正在寻找有关如何组织对象(数据结构)或可用于解决此问题的算法的建议。谢谢!

过滤器示例:

  ((Object.A between 5 and 15) AND
(Object.B < 20) AND
(Object.C(AParam) > 0)) OR
(Object.IsRoot(...))

最佳答案

您可以使用该字段使用排序列表,这最多会限制您的搜索/过滤,然后执行 binary search获取此标准的索引/索引。

引用你上面的例子:生成一个A排序的列表,搜索515的索引,所以你会得到一个(小很多)列表(两者之间的所有索引),您必须在其中检查其他字段(BCIsRoot ).

Delphi (2009+) 排序列表的实现:DeHL.Collections.SortedList

关于algorithm - 快速过滤的数据结构(Delphi)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346826/

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