📜  排序数组 dotnet - C# (1)

📅  最后修改于: 2023-12-03 15:25:55.788000             🧑  作者: Mango

排序数组 dotnet - C#

在C#中,我们可以使用内置的排序函数从一个数组中创建有序的版本。在本文中,我们将学习如何使用这个函数,以及一些关于排序的基本知识。

排序函数

C#中的Array类提供了名为Sort的静态方法,我们可以通过它来对数组进行排序。该方法的名称暗示着它对原始数组进行修改,即在函数调用之后,原数组将被排序的版本所替代。

简单使用方式

下面是Sort函数的示例用法:

int[] arr = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5 };
Array.Sort(arr);

在此示例中,我们创建了一个整数数组arr,并在之后应用了Sort函数。 这将导致数组arr中的元素被排序。 在此示例中,Sort函数将生成按数字排序的数组。

自定义排序

可以使用Sort函数对自定义类型的元素进行排序。我们只需要为数组中存储的类型实现IComparable接口。

例如,假设我们有一个Person类,它有一个属性Age用于表示年龄:

public class Person : IComparable<Person>
{
    public int Age { get; set; }

    public int CompareTo(Person other)
    {
        return Age.CompareTo(other.Age);
    }
}

在此示例中,Person类实现IComparable<Person>接口,并实现CompareTo方法来定义排序。在实现中,我们比较了Age属性。

要将Person对象的数组排序,我们可以像下面一样使用Sort函数:

Person[] people = {
    new Person() { Age = 25 },
    new Person() { Age = 15 },
    new Person() { Age = 35 }
};
Array.Sort(people);

在此示例中,我们创建了一个Person对象数组,然后通过应用Sort函数使它们按年龄排序。

注意:当我们使用Sort函数对自定义类型的对象排序时,我们必须确保该类型实现了IComparable接口。

排序算法

Sort函数在内部使用一些不同的排序算法,以便根据需要调整性能和稳定性之间的平衡。

以下是.NET Framework 4.5中实现的排序算法列表:

  • Introspective sort
  • Heapsort
  • Quicksort
  • Insertion sort

在大多数情况下,Sort函数将使用Introspective sort,它在大多数情况下提供良好的性能。但是,当输入集合具有一些不寻常的特征时,Sort函数将选择不同的算法以获得最佳性能。

总结

在C#中,我们可以使用Sort函数对数组进行排序。这个函数很灵活,甚至可以用于包含自定义类型的数组,只要该类型实现了IComparable接口。 在排序中,Sort函数会自动选择最适合当前数据的算法。