C#按绝对值对数组排序不适用于输入数组

问题描述 投票:-3回答:2

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

我需要这样的结果:

输入:-5 4 8 -2 1

输出:1 -2 4 -5 8

    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);

    }
c# arrays sorting
2个回答
7
投票

为什么不

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);

0
投票

这是您的解决方案。

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);
            }

亲切的问候,一个同学?

© www.soinside.com 2019 - 2024. All rights reserved.