Дан массив целых чисел. Не используя нового массива,разместить элементы массива так,чтоб сначала шли все элементы,равные нулю,а потом -остальные. Помогите пожалуйста написать программу на С# Срочно!
Мы просто ищем элемент равный нулю, а и просто переносим его на перёд.
LINQ:
Важно!!! По факту использование LINQ это не нативное создание массива, вы не объявляете его, но метод сам создаёт новый массив, поэтому подойдёт ли вам этот метод - решайте сами.
static void FormatArrayLinq(ref int[] arr)
{
//выбираем сначала нули а потом соеденяем с массивом где нулей нет
arr = arr.Where(x => x == 0).Concat(arr.Where(x => x != 0)).ToArray();
}
В этом методе мы сначала выбираем элементы равные нулю - потом остальные и соединяем результаты.
Answers & Comments
Есть 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();
}
В этом методе мы сначала выбираем элементы равные нулю - потом остальные и соединяем результаты.