最有可能的主题是关于以下事实:Sort
不保证元素的顺序相等。不像稳定排序 http://en.wikipedia.org/wiki/Stable_sort#Stability保留相等元素原始顺序的算法“不稳定排序”可能会交换它们。通常,当您手动排序时,您会执行“稳定排序”版本。
数组排序 http://msdn.microsoft.com/en-us/library/6tf1f0bc.aspx:
该实现执行的排序不稳定;也就是说,如果两个元素相等,它们的顺序可能不会保留。相反,稳定排序会保留相等元素的顺序。
示例中使用的排序函数使得1 == 3, 1 == 5
因此,不稳定排序可以以任何方式对这些数字进行排序,只要它们与其他数字相比顺序正确即可:1,3,5(稳定 - 与源中的顺序相同)或任何序列 3,1,5(不稳定排序) )。
I.e. OrderBy http://msdn.microsoft.com/en-us/library/bb549422.aspx实现“稳定排序”,您可以使用相同的比较函数在以下示例中看到结果:
void Main()
{
int[] numbers = { 1, 2, 3, 4, 5 };
var result = numbers.OrderBy(x=> x, new MyComparer()));
// 1, 3, 5, 2, 4
}
public class MyComparer : IComparer<int>
{
public int Compare( int x, int y)
{
return x % 2 == y % 2 ? 0 : x % 2 == 1 ? -1 : 1;
}
}