如何使用小于关系对C#中的对象数组进行排序。即不使用三值IComparer。
当数组的元素构成总顺序时,使用IComparer接口和Array.Sort [0]方法不是问题[1]。然而,在某些情况下,我们面临着对有序集合进行排序的任务[2]。在这些情况下,无法正确实现IComparer接口。可能存在既不小于,等于或大于某些其他元素的元素对。
我总是可以实现我自己的排序算法,接受一个小于谓词,但是必须有一些库函数,或者不存在?
[0] http://msdn.microsoft.com/en-us/library/system.array.sort.aspx
答案 0 :(得分:0)
我真的不明白你为什么要这样做?它会使你的排序变慢。 -1 / 0/1返回通常排序的原因是你只需要检查两个元素一次; int [] myIntArray = new int [] {10,40,20,35,8}
当您将[0]与[4]进行比较时,得到1,然后您知道[4]小于[0]并且不需要再次使用[0]检查[4]。
但是如果你只使用lessThan,那么你会得到“假”并且不知道[4]是否小于[0]而没有具体检查,因为10&lt; 8是假的,而8 <8。 10是真的。
所以,你看,我认为你真的不想只使用更少的东西。只需使用ICompare ......
另外,对于排序等,我认为你最好使用列表而不是数组。减少拳击/拆箱。
答案 1 :(得分:0)