C#按绝对值对数组进行排序与输入数组不符

C#按绝对值对数组进行排序与输入数组不符,c#,arrays,sorting,C#,Arrays,Sorting,使用输入数组按绝对值对数组排序不起作用,但用简单数组替换它会起作用。我不知道它为什么不起作用,我只是不知道出了什么问题 我需要这样的结果: 输入:-548-211 输出:1-24-58 static void Main() { var sampleInput = Console.ReadLine().Split().Select(int.Parse).ToArray(); int[] x = sampleInput; int n

使用输入数组按绝对值对数组排序不起作用,但用简单数组替换它会起作用。我不知道它为什么不起作用,我只是不知道出了什么问题

我需要这样的结果:

输入:
-548-211

输出:
1-24-58

    static void Main()
    {
        var sampleInput =  Console.ReadLine().Split().Select(int.Parse).ToArray();

        int[] x = sampleInput;
        int n = sampleInput.Length;
            int[] output = new int[n];
            string sOutput = string.Empty;
            int start = 0;
            int last = n - 1;

            while (last >= start)
            {
                n--;
                if (Math.Abs(x[start]) > Math.Abs(x[last]))
                {
                    output[n] = x[start++];
                }
                else
                {
                    output[n] = x[last--];
                }

                sOutput = output[n].ToString() + " " + sOutput;
            }

            Console.Write(sOutput);

    }
为什么不呢

using System.Linq;

var sorted = new [] {-5, 4, 8, -2 , 1}.OrderBy(Math.Abs);
(当然,要获得一个数组,您可以在最后添加一个
.ToArray()

要传递您想要的内容:

var sampleInput =  Console.ReadLine().Split().Select(int.Parse).ToArray();
var sorted = sampleInput.OrderBy(Math.Abs);
这是你的解决方案

var array = Console.ReadLine().Split(' ').Select(s => int.Parse(s)).ToArray();

            var sorted = array.OrderBy(Math.Abs);

            foreach (int element in sorted)
            {
                Console.WriteLine(element);
            }
亲切问候,,
同学?

需要时添加
.ToArray()
。我需要能够输入我想要的任何数组,而不仅仅是一个固定数组。@AirWolf-
。OrderBy()
IEnumerable
上工作,所以您可以参加。当你真的(真的)需要就地排序时,你应该说清楚。我不确定我到底需要什么,这是问题的核心。@AirWolf当然你可以传递你想要的。。请参阅更新以获取帮助,请注意OP可能正在使用此代码-。在代码中编写排序算法通常比它的价值更麻烦。这是一个高等数学问题,不是真正的编程问题。存在着现有的、经过过度测试的代码,这些代码是由理解底层数学的所有细节的人编写的。除了学习它们是如何工作的,你还应该像对待黑匣子一样对待它。我会给Array.Sort()一个自定义比较器。或者使用zaitsman提供的LINQ方法,因为它较短且仍然清晰易懂。“我不确定我到底需要什么,这是问题的核心。”回答我们和你自己以下问题:1。您要排序什么?2.你想怎么分类?3.你为什么要这样分类特别是,如果您对类实例进行排序,通常有十几种方法可以剥特定猫科动物的皮,而且每种方法都可能在某个时候有效。您正在使用的GUI技术也起到了一定的作用。