C# 如何实现整型数组按照数值绝对值大小排序
解决方案
你可以使用Array.Sort的重载方法,传入自定义比较逻辑实现按绝对值升序排序,修改后代码如下:
int[] a = { 3, 2, 0, 4, -5, 8, 7, 6 }; // 传入自定义比较委托,按元素绝对值比较 Array.Sort(a, (x, y) => Math.Abs(x).CompareTo(Math.Abs(y))); for(int i = 0; i < a.Length; i++) { Console.WriteLine(a[i]); }
逻辑说明
- 默认
Array.Sort对int数组排序时使用的是数值本身的大小比较规则,所以负数会排在最前面 - 上述代码通过lambda表达式传入自定义比较委托,对两个待比较的元素先取绝对值再做大小比较,最终输出结果就会按照绝对值升序排列,完全匹配你的预期输出。
内容的提问来源于stack exchange,提问作者Connor
相关产品推荐
相关产品推荐

