Каким образом(кодом) записать в С# данное условие?

Превратить массив таким образом, чтобы сначала располагались все элементы, равные нулю, а затем – все остальные.


Ответы (3 шт):

Автор решения: S.H.

Ваш вопрос немного нарушает правила сайта (учебные задания допустимы только в случае, когда приводится своя попытка решения).

Поэтому я схитрю: я тоже не напишу кода!

Наивная реализация: заводим второй массив, в него кладём нулевые элементы из первого, а потом кладём все оставльные из первого.

Если нельзя заводить второй массив: бежим по массиву двумя индексами. Один - для нулевых элементов, второй - для ненулевых. встретив нулевой элемент - меняем его местами с первым ненулевым. Таким образом, все нулевые элементы соберутся в начале массива.

→ Ссылка
Автор решения: Ольга Иванова

Можно сначала подсчитать сколько у вас нулевых элементов, а остальные просто запишите. Скажем у вас массив из 50 элементов, и вы находите, что нулевых у вас 10, тогда просто пишете a[1]=0, a[2]=0, a[3]=0.... и до a[10]=0, потом записываете остальные, сравнивая с нулем, если равен нулю, то отбрасываете, если не равен записываете.

→ Ссылка
Автор решения: Andrei Khotko

Хоть вопрос не соответствует правилам портала, задача очень заинтересовала, и я решил написать решение-однострочник на LINQ:

var arr = new[] {1, 0, 3, 0, 2, 123, 19, 12, 0, 99, 0};
var resultArr = arr.OrderBy(i => i == 0 ? 1 : 2).ToArray();
→ Ссылка