各位高手,我是个新手,请帮帮我,c#,中,如何用最快的方法实现排序功能呢?

解决方案 »

  1.   

    datagridview开启排序功能,呵呵,是不是最快(我指的是写代码最快)
      

  2.   

    1,速度最快的排序,肯定是桶排序,复杂度O(N),使用冒泡O(N*N)的要鄙视一下.
    2,开发最快的,List<T>.Sort(),一行代码搞定,微软提供的O(N*LogN)算法,可以接受.
      

  3.   

    桶排序(也叫散列或哈希),举个例子:一个班级的考试成绩,按照高低输出.
    你只需要准备100个桶,把所有人的试卷根据分数扔到桶了,顺次拿出来,就可以实现排序,30份你只需要计算30次,牺牲了空间,换取了时间,复杂度O(N)冒泡法是公认的失败算法之一,最坏的情况是O(N*N),就是上面的例子,如果班级有30人,可能要进行900次运算,如果有100人就可能进行1万次运算.如果全省统考,那完蛋了,计算机没响应了.索引后的数据库表的是遵循哈希原理的,查找某个值的复杂度是O(1)而不是O(N)也不是有序数组折半查找的O(Log N),他的排序复杂度是O(N)
    使用二叉树,查找复杂度是O(Log N),排序复杂度是O(N*Log N)以上是数据库结构中最核心的三种复杂度,请记住以上结论.
      

  4.   

    C#里可以实现O(1)查找速度的是Dictionnary<T>
      

  5.   

    单纯的排序,也许是用hash的方法最快, 用空间换时间但是创建hash表,也要费时间的, 所以总时间不一定最短
    一般的用快速排序法,性能还是不错的,平均复杂度为O(N * logN)
      

  6.   


    关于这位老兄对桶排序的看法我有不同意见,桶排序仍然有最坏和最好情况,最坏情况时,平均时间复杂度仍有可能是O(n平方),而对于每个桶来说,其中很可能仍然是使用冒泡排序算法的,对于你所说的冒泡排序时要进行900次运算等等,换为桶排序时依然可能会遇到这些情况.对于泛型的排序比较复杂,如果其中存储的是对象,必须要实现一个比较接口icompare才能进行排序,如果要自定义排序的方式,则需要做一个比较器来自定义,并不是所有存储在泛型集合中的内容都能简单的通过sort()这个方法来实现排序的
      

  7.   

    泛型里边有个 sort()函数,据说是用的快速排序。