惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
爱范儿
爱范儿
小众软件
小众软件
MyScale Blog
MyScale Blog
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
V
V2EX
量子位
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
Martin Fowler
Martin Fowler
C
Check Point Blog
月光博客
月光博客

博客园 - wljcan

用户中心 - 博客园 FMEFB开始上传 代码实现的事件响应 UIAlertView的使用方法 开始新的学习历程--ios开发 nod32 制作的手机电子书UMD文件编辑器 关于IOC 精彩的讨论《数据库时代的终结 》 Oracle开发中,关于查询的一个问题 使用NHibernate时需要考虑的另一个问题 关于crystal report和NHibernate应用的一个问题 使用NHibernate时,如何提高访问Oracle数据库(ODP.net)的性能 在Google 上搜书的方法 (转) - wljcan 一个NHibernate的好工具---Query Analyzer 在PowerDesigner中生成SQL脚本时,如何生成备注信息? 北京公司招聘 .net开发人员 .net使用Com组件的问题 应用中的安全管理方案
ArrayList中的排序
wljcan · 2005-02-08 · via 博客园 - wljcan

在用.net实现最短路径(偶以前的Blog有描述)的时候,需要使用有排序功能的堆栈。但是在.net中的stack没有排序功能,因此考虑用排序的ArrayList实现。

ArrayList中有一个Sort方法来实现排序功能。 其公开了一个接口,以实现自定义的排序。如:

调用时,使用Sort(new NodeDataComparer())即可。 (在向ArrayList添加数据时,添加NodeData类型对象)

这种实现方法比较简单,但是在使用时却发现性能比较低,是以前用VB6编写的 1/6。 仔细想了一下,可能是由于这两个原因:

1、在使用ArrayList时,需要频繁使用Box和UnBoxing。
2、排序算法的低效。

针对这两个问题,将算法进行了调整,即:在向ArrayList中插入数据时,按中值排序算法,计算该元素所在的位置,使用Insert方法插入。 这样就避免了使用 ArrayList的Sort方法,性能得到了很大的提升(6倍以上)。  至此,完成了.net平台下GIS平台的最短路径算法。(核心部分与GIS平台无关)

建议:如果ArrayList需要频繁排序,尽量避免使用Sort方法。