C#中List或其它集合对象排序方法的一点理解

时间:2022-09-03 18:53:37

         因为这个是老生常谈的话题了吧,所以过多的其它代码粘贴或拷贝就不做太多,只谈谈这段时间为了解决项目特别功能而用到的基础排序知识!

         在项目中进行数据排序是非常常见的,所以今天做个备注,方便日后查阅吧!

         1,自定义集合的自定义排序算法:一般基本算法中有讲解
               这些算法在时空复杂度方面一般都会做对比,可以说是我们算法的必修课!这里不做解说了!

         2,数组、集合的LINQ排序:
               个人比较喜欢复用特性及抽象特性。LINQ扩展方法排序:这个是.net3.5之后我就一直喜欢的,其主要使用了类似SQL的语法即Lambda表达式进行,其主要通过扩展方法来做实现,一般的集合类都有扩展。所以,一般具有“集合特性”的数据对象,通过LINQ来操作就非常方便了。

               如:

               int[] numtemp = new int[5] { 0,8,-3,3,9};

               numtemp= numtemp.OrderBy(n => n).ToArray();//如果熟悉SQL语言的话,Lambda就非常容易理解了
              
            3,集合LINQ扩展方法Sort(带有这个方法的集合对象)的比较器排序:有点拗口哦!

               .net对数据结构中涉及到的常见的数据结构进行了实现,如集合、队列、堆栈、链表等,这里说List;

              List<int> list = new List<int>();
              list.Add(0);
              list.Add(8);
              list.Add(-3);
              list.Add(3);
              list.Add(9);

              list.Sort(这里需要一个比较器);

              说一下如上需要的比较器的特征:能够判断大小、两两能比较(扩展方法sort已经做了参数的接收,剩下的排序由sort解决,默认升序)。由此,容易设想到方法有很多的如比较器IComparable、IComparer的实现,委托的实现:其实核心就是CompareTo方法。
             
              4,单值判断,特别是字符串排序(比较)

               ==比较、Equals比较、CompareTo的单值比较等。

    

             5,其它

              可以说,算法万千,是否只有这些?NO!时间关系,这里简单做了一些介绍!只要用心思考及不断总结就会得到意想不到的收获!同时,在实际应用中,功能与性能等均是我们要考虑的,等等!

              今天的代码少(网上应该很多代码!-_-),抱歉!吃饭去了!哈哈!