ArrayList中的排序
在用.net实现最短路径(偶以前的Blog有描述)的时候,需要使用有排序功能的堆栈。但是在.net中的stack没有排序功能,因此考虑用排序的ArrayList实现。
ArrayList中有一个Sort方法来实现排序功能。 其公开了一个接口,以实现自定义的排序。如:
public class NodeDataComparer : IComparer
{
IComparer 成员
}
调用时,使用Sort(new NodeDataComparer())即可。 (在向ArrayList添加数据时,添加NodeData类型对象)
这种实现方法比较简单,但是在使用时却发现性能比较低,是以前用VB6编写的 1/6。 仔细想了一下,可能是由于这两个原因:
1、在使用ArrayList时,需要频繁使用Box和UnBoxing。
2、排序算法的低效。
针对这两个问题,将算法进行了调整,即:在向ArrayList中插入数据时,按中值排序算法,计算该元素所在的位置,使用Insert方法插入。 这样就避免了使用 ArrayList的Sort方法,性能得到了很大的提升(6倍以上)。 至此,完成了.net平台下GIS平台的最短路径算法。(核心部分与GIS平台无关)
建议:如果ArrayList需要频繁排序,尽量避免使用Sort方法。
ArrayList中有一个Sort方法来实现排序功能。 其公开了一个接口,以实现自定义的排序。如:







这种实现方法比较简单,但是在使用时却发现性能比较低,是以前用VB6编写的 1/6。 仔细想了一下,可能是由于这两个原因:
1、在使用ArrayList时,需要频繁使用Box和UnBoxing。
2、排序算法的低效。
针对这两个问题,将算法进行了调整,即:在向ArrayList中插入数据时,按中值排序算法,计算该元素所在的位置,使用Insert方法插入。 这样就避免了使用 ArrayList的Sort方法,性能得到了很大的提升(6倍以上)。 至此,完成了.net平台下GIS平台的最短路径算法。(核心部分与GIS平台无关)
建议:如果ArrayList需要频繁排序,尽量避免使用Sort方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通