更好的方法来降序排列数组

我有一个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