Сортировка большого массива, сохраняя некоторые элементы на месте (каждый язык) - PullRequest
0 голосов
/ 21 марта 2019

Кто-нибудь может мне помочь? У меня проблема: задан массив элементов массива (неограниченное количество элементов массива). Сортируйте элементы в порядке возрастания, но сохраняйте все элементы со значением -1 в исходном положении.

пример: a=[4, -1, 5, 1, 8, 3, 2, -1]

после сортировки: a=[1, -1, 2, 3, 4, 5, 8, -1]

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Вот как вы можете сделать это в C #:

using System;
using System.Collections.Generic;

namespace NameSpace
{
    class Class
    {
        static int[] a = { 4, -1, 5, 1, 8, 3, 2, -1 };
        static List<int> Storage = new List<int>();
        static int indexToAdd = 0;
        static void Main()
        {
            foreach(int i in a)
            {
                if(i != -1)
                {
                    Storage.Add(i);
                }
            }
            Storage.Sort();

            for(int i = 0; i < Storage.Count; i++)
            {
                if(a[indexToAdd + i] == -1)
                {
                    indexToAdd++;
                }
                a[indexToAdd + i] = Storage[i];
            }

            foreach(int i in a)
            {
                Console.WriteLine(i);
            }
            Console.Read();
        }
    }
}
0 голосов
/ 21 марта 2019

Вы можете создать новый список с индексами каждого элемента, который не равен -1, то есть с индексами элементов, которые необходимо отсортировать, а затем выполнить один из примеров в этой задаче RosettaCode: Сортировать непересекающийся подсписок

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