C# Stable Sort(稳固排序)2010-12-28保证相等元素的原始位置的排序被称为是稳固的。一个非稳固排序(unstable sort)不保证相等的元素在排序之后还会保持原来的顺序。.NET使用的排序方法是不稳固的。这些排序方法,包括 System.Array.Sort 和 System.Collections.Generic.List<T>.Sort,使用的是快速排序算法,相对来说是非常快的。然而,总有时候你会需要稳固排序,此时,一个解决方案是必须的。示例:用一个例子可以很好的说明稳固排序。考虑下面这个Person类,其中包含Name和Age两个属性,同时它还实现了IComparable接口(其中包含CompareTo方法)。这里的CompareTo方法根据Age来排序。class Person : IComparable { public Person( string name, int age ) { this.Name = name; this.Age = age; } public string Name; public int Age; public int CompareTo( object obj ) { int result = 1; if (obj != null && obj is Person) { Person person = (Person)obj; result = this.Age.CompareTo( person.Age ); } return result; } public override string ToString() { return String.Format( "{0} - {1}", this.Name, this.Age ); } }现在,让我们创建、排序和写一个Person类的集合。Person p1 = new Person( "Abby", 38 ); Person p2 = new Person( "Bob", 23 ); Person p3 = new Person( "Charlie", 23 ); Person p4 = new Person( "Danielle", 18 ); List<Person> list = new List<Person>(); list.Add( p1 ); list.Add( p2 ); list.Add( p3 ); list.Add( p4 ); list.Sort(); Console.WriteLine( "Unstable List Sort:" ); foreach (Person p in list) { Console.WriteLine( p ); }