zoukankan      html  css  js  c++  java
  • 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方法。
  • 相关阅读:
    fiddler 使用
    IO多路复用
    scrapy下载 大文件处理

    session见解
    自定义分页
    COOKIE
    ORM之老师管理
    ORM之学生管理
    ORM之班级管理
  • 原文地址:https://www.cnblogs.com/wljcan/p/103402.html
Copyright © 2011-2022 走看看