C # Сортировать массив по абсолютному значению не работает, как предполагалось с входным массивом - PullRequest
0 голосов
/ 28 октября 2019

Сортировка массивов по абсолютному значению с использованием входного массива отказывается работать, но замена его на простой массив работает. Я понятия не имею, почему это не работает, я просто не вижу, что не так.

Мне нужно, чтобы результат был таким:

Ввод: -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);

    }

Ответы [ 2 ]

7 голосов
/ 28 октября 2019

почему бы и нет

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 голосов
/ 30 октября 2019

Вот ваше решение.

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

С уважением, Одноклассник?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...