【问题标题】:Sorting an array in C# except one number在 C# 中对数组进行排序,除了一个数字
【发布时间】:2021-12-05 08:58:06
【问题描述】:

首先这是我的代码:

int[] a = { 3, 2, 0, 4, -5, 8, 7, 6 };
Array.Sort(a);

for(int i = 0; i < a.Length; i++)
{
    Console.WriteLine(a[i]);
}

输出:

-5
 0
 2
 3
 4
 6
 7
 8

我的问题是我想像计算机一样对所有数字进行排序,但 -5 除外。这就是我想要的输出:

 0
 2
 3
 4
-5
 6
 7
 8

【问题讨论】:

    标签: c# arrays sorting


    【解决方案1】:

    你可以这样做:

    using System.Linq;
    
    int[] sorted = new [] { 3, 2, 0, 4, -5, 8, 7, 6 }.OrderBy(Math.Abs).ToArray();
    // now you can print "sorted" as array
    

    它将按项目的绝对值对项目进行排序,这正是您要查找的。​​p>

    【讨论】:

    • 我如何在控制台中打印出来?
    • @Connor:提示:使用foreach 循环,或string.Join
    • 和你的问题一样吗?你也可以使用Console.Write来打印我认为的数组(在Java中我们可以,所以在c#中可能是一样的)
    • 没问题 x) 您可以查看我的答案,以帮助其他人更快地找到您的问题并将其标记为已解决:)
    • @Elikill58:在这种情况下,结果不是数组,因此与问题中完全相同的代码将无法正常工作。 (您可以将ToArray 添加到您的答案中,当然可以。)
    【解决方案2】:

    您可以使用此代码:

    int[] a = { 3, 2, 0, 4, -5, 8, 7, 6 };
    int[] result = a.OrderBy(a=> Math.Abs(a)).ToArray();
    

    结果:0、2、3、4、-5、6、7、8

    【讨论】:

    • 谢谢,这比其他解决方案更好。
    • 和第一个(更新的)答案一模一样!
    • 不,它(字面上)不完全相同。这不是抄袭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2011-04-23
    • 2013-12-24
    • 2013-08-05
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多