Информатика, вопрос задал iveriy432 , 2 года назад

Дан массив целых чисел. Не используя нового массива,разместить элементы массива так,чтоб сначала шли все элементы,равные нулю,а потом -остальные.
Помогите пожалуйста написать программу на С#
Срочно!​

Ответы на вопрос

Ответил slavabooster
1

Есть 2 метода, LINQ и обычный.

Обычный:

static void FormatArray(ref int[] arr)

       {

           int SwapCount = 0;

           for (int i = 0; i < arr.Length; i++)

           {

               if(arr[i] == 0)

               {

                   //Меняем элементы местами через кортежи

                   (arr[i], arr[SwapCount]) = (arr[SwapCount], arr[i]);

                   SwapCount++;

               }

           }

       }

Мы просто ищем элемент равный нулю, а и просто переносим его на перёд.

LINQ:

Важно!!! По факту использование LINQ это не нативное создание массива, вы не объявляете его, но метод сам создаёт новый массив, поэтому подойдёт ли вам этот метод - решайте сами.

static void FormatArrayLinq(ref int[] arr)

       {

           //выбираем сначала нули а потом соеденяем с массивом где нулей нет

           arr = arr.Where(x => x == 0).Concat(arr.Where(x => x != 0)).ToArray();

       }

В этом методе мы сначала выбираем элементы равные нулю - потом остальные и соединяем результаты.

Новые вопросы