更好的方法来降序排列数组
我有一个int数组,我必须按降序sorting。
因为我没有find任何方法来按降序排列数组。目前,我按照如下降序排列数组
int[] array = new int[] { 3, 1, 4, 5, 2 }; Array.Sort<int>( array ); Array.Reverse( array );
现在,问题是。是否有更好的方式在c#中做同样的事情?
根据sorting顺序,你可以这样做:
int[] array = new int[] { 3, 1, 4, 5, 2 }; Array.Sort<int>(array, new Comparison<int>( (i1, i2) => i2.CompareTo(i1) ));
… 或这个 :
int[] array = new int[] { 3, 1, 4, 5, 2 }; Array.Sort<int>(array, new Comparison<int>( (i1, i2) => i1.CompareTo(i2) ));
i1和i2恰好相反。
使用LINQ OrderByDescending
方法。 它返回IOrderedIEnumerable<int>
,如果需要,可以将其转换回数组。 一般来说, List<>
s比Array
s更有用。
array = array.OrderByDescending(c => c).ToArray();
当然,你可以自定义sorting。
您需要将Sort()委托给一个将用于sorting的比较方法。
使用匿名方法:
Array.Sort<int>( array, delegate(int a, int b) { return b - a; //Normal compare is ab });
阅读更多关于它:
sorting数组
MSDN – Array.Sort方法(T [],比较)
是的,你可以通过谓词来sorting。 这将是你的反向实施。
您可以指定一个比较器(IComparer实现)作为Array.Sort中的一个参数,sorting的顺序实际上取决于比较器。 默认比较器用于升序sorting