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

    xiaoxiao2021-03-25  90

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

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

             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!时间关系,这里简单做了一些介绍!只要用心思考及不断总结就会得到意想不到的收获!同时,在实际应用中,功能与性能等均是我们要考虑的,等等!

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

    转载请注明原文地址: https://ju.6miu.com/read-19822.html

    最新回复(0)