排序
数组
https://learn.microsoft.com/en-us/dotnet/api/system.array.sort?view=net-7.0
| using System; |
| |
| Array.Sort(Array); |
| Array.Sort(Array, IComparer); |
定义一个比较器类MySort,继承IComparer接口实现Compare方法,将实例传入Sort函数:
返回值1,将y放在x的左侧
-1将y放在x的右侧
1保持位置不变
不知道怎么写返回值时,写一个调试一下就知道,错了改一下就行。
| class mySort: IComparer |
| { |
| #region IComparer Members |
| |
| public int Compare(object x, object y) |
| { |
| Student s1 = x as Student; |
| Student s2 = y as Student; |
| |
| if(s1.Age < s2.Age) |
| return 1; |
| else if(s1.Age == s2.Age) |
| return 0; |
| else |
| return -1; |
| } |
| |
| #endregion |
| } |
| static void Main(string[] args) |
| { |
| Person[] p = new Person[]{ |
| new Person(10,"zhang"), |
| new Person(30,"wang"), |
| new Person(40,"fang"), |
| new Person(20,"lang"), |
| }; |
| Array.Sort(p, new MySort()); |
| |
| foreach(var ii in p){ |
| Console.WriteLine($"age={ii.Age},name={ii.Name}"); |
| } |
| } |
| |
| class MySort: IComparer |
| { |
| #region IComparer Members |
| |
| public int Compare(object x, object y) |
| { |
| Person s1 = x as Person; |
| Person s2 = y as Person; |
| if(s1.Age < s2.Age) |
| return 1; |
| else if(s1.Age==s2.Age) |
| return 0; |
| else |
| return -1; |
| } |
| |
| #endregion |
| } |
| |
| public class Person |
| { |
| public int Age{set;get;} |
| public string Name{set;get;} |
| |
| public Person(int a, string n){ |
| this.Age=a; |
| this.Name=n; |
| } |
| } |
定义数据类型时继承IComparable接口实现CompareTo方法
这时该数据类型的集合,调用Sort()排序时将按照CompareTo方法指定排序规则进行排序。
int、string、object类型可用CompareTo方法,默认升序。
| public class Person:IComparable |
| { |
| public int Age{set;get;} |
| public string Name{set;get;} |
| |
| public Person(int a, string n) |
| { |
| this.Age=a; |
| this.Name=n; |
| } |
| |
| public int CompareTo(object oo) |
| { |
| Person pp = oo as Person; |
| |
| if (Age < pp.Age) |
| { |
| return -1; |
| } |
| else if (Age == pp.Age) |
| { |
| return 0; |
| } |
| else |
| { |
| return 1; |
| } |
| |
| |
| } |
| } |
List
| using System.Collections.Generic; |
| |
| Sort(); |
| Sort(IComparer<T>); |
| List<Person> ll = new List<Person>(); |
| ll.Add(new Person(10,"zhang")); |
| ll.Add(new Person(20,"wang")); |
| ll.Add(new Person(30,"fang")); |
| ll.Add(new Person(40,"lang")); |
| ll.Sort(); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了