.net - 使用.net 3.5框架快速排序

标签 .net vb.net sorting

在我正在编写的科学应用程序(vb.net)中,我使用存储在树结构中的大量对象集合。每个对象都公开一个 LastAccessed 属性(日期时间),该属性存储算法上次访问节点的时间。

我需要找到一种快速方法来查找结构中 N 个最少访问的对象。

我正在使用这样的算法(伪代码)

dim Olist as new list (of myobject)
....
array.sort(Olist,address of compareByDataReverse)
for index=0 to N-1
   dosomething(Olist.item(index))
end

我确信有更好的方法来做到这一点,因为列表通常很大(包含超过 10^6 个对象)。

谢谢
PIL 路易吉

最佳答案

您提到您使用树结构,但您向我们展示了一个列表。如果您使用列表,您确实可以对其进行排序 (O(l log(l)),然后在 O(1) 中获取最后 n 个元素。或者只是迭代它并在 (O(l)) 中获取最后 n 个元素。

但是您可以使用 TreeView 。您没有提到您的树是如何实现的。您可以使用 LastAccessed 日期作为键创建二叉搜索树。搜索前 N 个元素也可以非常快地完成。

或者,您可以保留一个索引。只需创建一个以 LastAccessed 日期为键的 TreeView 。在原始列表中插入或删除项目也会更新您的索引。然后,您可以根据项目的日期快速检索项目的链接。以较慢的插入/删除为代价。

关于.net - 使用.net 3.5框架快速排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386077/

相关文章:

vb.net - 百分比符号作为变量名称的一部分是什么意思?

java - 使用java为插入排序调试xor-swap

.net - Azure .Net API 不会对专用端点进行出站调用,但在本地一切正常

c# - 在 linq 中连接字符串时获取 null

c# - 如何映射具有对实体的引用的值类型?

vb.net - 了解 RTF 并使用 vb.net 进行编辑

.net - 尝试捕捉 - 不捕捉

javascript - 在二维中对颜色进行排序

c++ - 迭代器和整数的减法

c# - 取消 token 在这里有什么用