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