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

csharp_array_class.html