📅  最后修改于: 2023-12-03 15:08:52.606000             🧑  作者: Mango
当需要对一个数组进行排序时,C#中提供了很方便的方式,即使用Array.Sort()方法。Array.Sort()方法可以接收任何实现了IComparable接口的元素或自定义比较器作为参数。
下面是如何使用Array.Sort()方法对数组进行排序的示例:
int[] arr = { 2, 3, 1, 4, 5 };
Array.Sort(arr);
上面的代码将arr数组升序排序。
我们也可以使用自定义比较器来对数组进行排序。在下面的示例中我们将用比较器按照字符串长度对字符串数组进行升序排序。
string[] strArr = { "apple", "banana", "pear", "orange" };
Array.Sort(strArr, (x, y) => x.Length.CompareTo(y.Length));
上面的代码中,比较器使用了Lambda表达式,将两个字符串进行比较,按照字符串长度升序排序。
Array.Sort()方法还支持以下几个重载方法:
public static void Sort<T>(T[] array);
public static void Sort<TKey, TValue>(TKey[] keys, TValue[] items);
public static void Sort<T>(T[] array, IComparer<T> comparer);
public static void Sort<TKey, TValue>(TKey[] keys, TValue[] items, IComparer<TKey> comparer);
其中,第一个重载方法用来对任何实现了IComparable接口的数组进行升序排序,第二个重载方法可用于同时对键值对数组进行排序,后两个重载方法则可用于自定义排序规则。
在使用自定义比较器进行排序时,请注意自定义比较器应该实现IComparer
public class MyComparer : IComparer<int>
{
public int Compare(int a, int b)
{
// 自定义比较规则
return a % 10.CompareTo(b % 10);
}
}
上面的代码演示了如何定义一个自定义比较器对整型数组进行排序。在比较器中,我们按照元素的个位数进行排序。
使用自定义比较器时,我们可以直接实例化比较器,然后将其作为Array.Sort()方法的参数传入。
int[] nums = { 75, 986, 369, 123, 980 };
Array.Sort(nums, new MyComparer());
上面的代码演示了如何使用自定义比较器对整型数组进行排序。
总结:
C#中的Array.Sort()方法提供了很方便的排序功能,可以通过实现IComparer接口或传入自定义比较器来实现自定义排序规则。在使用Array.Sort()方法时,请注意使用正确的重载方法,并遵循比较器接口的规范。