C# 数组 - Sort() 方法
C# 数组 Sort() 方法按升序对数组元素进行排序。它提供了多个重载方法,可根据各种参数进行排序,例如整个数组、数组中的某个范围或自定义比较器。下面是其语法和定义。
语法
以下是 C# 数组 Sort() 方法的语法 -
对整个数组进行排序
按升序对数组的所有元素进行排序 -
Array.Sort(array);
使用范围排序
从给定索引开始,对指定范围内的元素进行排序,跨越 length 个元素 -
Array.Sort(array, index, length);
使用自定义比较器排序
使用 Icomparer 函数对数组元素进行排序 -
Array.Sort(array, comparer);
使用自定义比较器对指定范围进行排序
使用自定义 IComparer 函数对数组中指定范围的元素进行排序 -
Array.Sort(array, index, length, comparer);
参数
此方法根据全重载方法接受以下参数 -
- array:必填参数,用于排序的数组。
- index:可选参数,表示排序部分的起始索引。
- length:可选参数,表示排序范围内元素的数量。
- comparer:比较元素时使用的 IComparer 实现。
返回值
此方法不返回任何值。
示例 1:对整个数组进行排序
让我们创建一个 Sort() 方法的基本示例,对整个整数数组进行排序 −
using System; class Program { static void Main() { int[] numbers = { 4, 5, 8, 7, 3, 1, 2}; // 对数组进行排序 Array.Sort(numbers); Console.WriteLine(string.Join(", ", numbers)); } }
输出
以下是输出 -
1, 2, 3, 4, 5, 7, 8
示例 2:使用范围排序
让我们看另一个使用 Sort() 方法对范围内的数组元素进行排序的示例 -
using System; class Program { static void Main() { int[] numbers = { 4, 5, 8, 7, 3, 1, 2}; // 对数组进行排序 Array.Sort(numbers, 2, 5); Console.WriteLine(string.Join(", ", numbers)); } }
输出
以下是输出 -
4, 5, 1, 2, 3, 7, 8
示例 3:使用 IComparer 进行自定义排序
这是 Sort() 方法的另一个示例。在这里,我们通过实现 Icomparer 接口来定义排序逻辑 -
using System; using System.Collections; class DescendingComparer : IComparer { public int Compare(object x, object y) { int intX = (int)x; int intY = (int)y; // 反转比较以按降序排序 return intY.CompareTo(intX); } } class Program { static void Main() { int[] numbers = { 5, 3, 1, 4, 2 }; // 使用自定义比较器按降序排序 Array.Sort(numbers, new DescendingComparer()); Console.WriteLine(string.Join(", ", numbers)); } }
输出
以下是输出 -
5, 4, 3, 2, 1
示例 4:使用不区分大小写的比较器进行排序
以下示例展示了如何使用自定义比较器对范围内的数组值进行排序,该比较器会反转排序顺序 -
using System; using System.Collections; public class ReverseComparer: IComparer { // 使用相反的参数调用 CaseInsensitiveComparer.Compare。 public int Compare(Object x, Object y) { return (new CaseInsensitiveComparer()).Compare(y, x); } } public class Example { public static void Main() { // 创建并初始化一个新数组。 String[] words = { "The", "QUICK", "BROWN", "FOX", "jumps", "over", "the", "lazy", "dog" }; // 实例化反向比较器。 IComparer revComparer = new ReverseComparer(); // 显示数组的值。 Console.WriteLine("数组中元素的原始顺序:"); DisplayValues(words); // 使用反向不区分大小写的比较器对数组的一部分进行排序。 Array.Sort(words, 1, 3, revComparer); Console.WriteLine("使用反向不区分大小写的比较器对元素 1-3 进行排序后:"); DisplayValues(words); } public static void DisplayValues(String[] arr) { for (int i = arr.GetLowerBound(0); i <= arr.GetUpperBound(0); i++) { Console.WriteLine(" [{0}] : {1}", i, arr[i]); } Console.WriteLine(); } }
输出
以下是输出 -
数组中元素的原始顺序: [0] : The [1] : QUICK [2] : BROWN [3] : FOX [4] : jumps [5] : over [6] : the [7] : lazy [8] : dog 使用反向不区分大小写的比较器对元素 1-3 进行排序后: [0] : The [1] : QUICK [2] : FOX [3] : BROWN [4] : jumps [5] : over [6] : the [7] : lazy [8] : dog