使用 .Net 如何使用 Sort 方法对数组进行反向排序,即从 Z 到 A?

Posted

技术标签:

【中文标题】使用 .Net 如何使用 Sort 方法对数组进行反向排序,即从 Z 到 A?【英文标题】:Using .Net how do I use the Sort method to sort an Array in reverse i.e. Z to A? 【发布时间】:2010-09-20 02:32:24 【问题描述】:

【问题讨论】:

【参考方案1】:

提供适当的元素比较器。您使用什么 C# 版本? 3 让你这样做:

Array.Sort(myarray, (a, b) => b.CompareTo(a));

【讨论】:

【参考方案2】:

您需要将IComparer 对象或Comparison 委托传递给排序函数。

这是来自 C# 2.0 的示例代码

   Array.Sort(array,delegate(string a, string b)
    
        return b.CompareTo(a);
    );

编辑:错过了数组位。

【讨论】:

为什么不简单地返回 b.CompareTo(a)? 这里实际上有两个重要的区别:1)空字符串应该怎么办?通常在反转比较时,您想要反转发生在 null 上的情况。只是一个想法。 2) 如果 a.CompareTo(b) 返回 int.MinValue,则返回 -a.CompareTo(b)(即预编辑)会导致问题。 我很确定大多数字符串排序算法,比如这个,如果列表中有空值,就会抛出 NullReferenceExceptions。但是,您在 #1 中提出的要点仍然适用于空字符串。【参考方案3】:

如果您使用与执行此操作的标准相反的不同比较器。

或者正常排序,然后倒序...

【讨论】:

以上是关于使用 .Net 如何使用 Sort 方法对数组进行反向排序,即从 Z 到 A?的主要内容,如果未能解决你的问题,请参考以下文章

java中如何使用arrays.sort()对二维数组排序?

不使用 sort 方法对数组进行字母排序

Java:使用sort方法对整个数组或部分数组进行排序的问题

在Javascript中对地址数组进行排序[重复]

sort() 数组的元素进行排序的方法

.net 如何对动态类型的数组排序?