当某些排序项目相同时,有没有办法从比较中获得一致的结果?我只需要编写自己的排序程序吗?
public class Sorter
{
public void SortIt()
{
var myData = new List<SortData>(3);
myData.Add(new SortData { SortBy = 1, Data = "D1"});
myData.Add(new SortData { SortBy = 1, Data = "D2" });
myData.Add(new SortData { SortBy = 2, Data = "D3" });
myData.Sort(new Comparison<SortData>((a, b) => a.SortBy.CompareTo(b.SortBy)));
ShowResults(myData);
myData.Sort(new Comparison<SortData>((a, b) => a.SortBy.CompareTo(b.SortBy)));
ShowResults(myData);
myData.Sort(new Comparison<SortData>((a, b) => a.SortBy.CompareTo(b.SortBy)));
ShowResults(myData);
}
private void ShowResults(IEnumerable<SortData> myData)
{
foreach (var data in myData)
{
Console.WriteLine(data.SortBy + " " + data.Data);
}
Console.WriteLine("\n");
}
}
public class SortData
{
public int SortBy { get; set; }
public string Data { get; set; }
}
enter code here
现在注意结果:
1 D2
1 D1
2 D3
1 D1
1 D2
2 D3
1 D2
1 D1
2 D3
我并不关心前两项是如何排序的,只要它是一致的而不是!它一直在翻转。
答案 0 :(得分:2)
基本上是的:http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx
此方法使用Array .. ::。Sort,其中 使用QuickSort算法。 :此 实现执行不稳定 分类;也就是说,如果有两个元素 平等,他们的订单可能不是 保存。相比之下,稳定 sort保留元素的顺序 这是平等的。
如果您想要一个稳定的排序,请查看其他地方或自己动手。