Better way to sort array in descending order
Use LINQ OrderByDescending
method. It returns IOrderedIEnumerable<int>
, which you can convert back to Array if you need so. Generally, List<>
s are more functional then Array
s.
array = array.OrderByDescending(c => c).ToArray();
Sure, You can customize the sort.
You need to give the Sort() a delegate to a comparison method which it will use to sort.
Using an anonymous method:
Array.Sort<int>( array,
delegate(int a, int b)
{
return b - a; //Normal compare is a-b
});
Read more about it:
Sorting arrays
MSDN - Array.Sort Method (T[], Comparison)
Depending on the sort order, you can do this :
int[] array = new int[] { 3, 1, 4, 5, 2 };
Array.Sort<int>(array,
new Comparison<int>(
(i1, i2) => i2.CompareTo(i1)
));
... or this :
int[] array = new int[] { 3, 1, 4, 5, 2 };
Array.Sort<int>(array,
new Comparison<int>(
(i1, i2) => i1.CompareTo(i2)
));
i1 and i2 are just reversed.