[英]Better way to sort array in descending order
我有一個 int 數組,我必須按降序對其進行排序。
由於我沒有找到任何按降序對數組進行排序的方法。目前我正在按降序對數組進行排序,如下所示
int[] array = new int[] { 3, 1, 4, 5, 2 };
Array.Sort<int>( array );
Array.Reverse( array );
現在,問題是。有沒有更好的方法在 c# 中做同樣的事情?
使用 LINQ OrderByDescending
方法。 它返回IOrderedIEnumerable<int>
,如果需要,您可以將其轉換回 Array。 通常, List<>
比Array
更實用。
array = array.OrderByDescending(c => c).ToArray();
根據排序順序,您可以執行以下操作:
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 只是顛倒了。
當然,您可以自定義排序。
您需要將 Sort() 委托給一個比較方法,它將用於排序。
使用匿名方法:
Array.Sort<int>( array,
delegate(int a, int b)
{
return b - a; //Normal compare is a-b
});
閱讀更多相關信息:
對於降序就地排序:
int[] numbers = { 1, 2, 3 };
Array.Sort(numbers, (a, b) => b.CompareTo(a));
對於異地排序(不更改輸入數組):
int[] numbers = { 1, 2, 3 };
var sortedNumbers = numbers.OrderByDescending(x => x).ToArray();
是的,您可以通過謂詞進行排序。 那將是您的反向實現。
你可以在 Array.Sort 中指定一個 comparer(IComparer implementation) 作為參數,排序的順序實際上取決於 comparer。 默認比較器用於升序排序
class Program
{
private static int[] table;
static void Main(string[] args)
{
int[] ints = new int[] { 6, 2, 5, 99, 55 };
table = ints.OrderByDescending(x => x).ToArray();
foreach (var item in table)
{
Console.WriteLine(item);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.