Каким образом(кодом) записать в С# данное условие?
Превратить массив таким образом, чтобы сначала располагались все элементы, равные нулю, а затем – все остальные.
Ответы (3 шт):
Ваш вопрос немного нарушает правила сайта (учебные задания допустимы только в случае, когда приводится своя попытка решения).
Поэтому я схитрю: я тоже не напишу кода!
Наивная реализация: заводим второй массив, в него кладём нулевые элементы из первого, а потом кладём все оставльные из первого.
Если нельзя заводить второй массив: бежим по массиву двумя индексами. Один - для нулевых элементов, второй - для ненулевых. встретив нулевой элемент - меняем его местами с первым ненулевым. Таким образом, все нулевые элементы соберутся в начале массива.
Можно сначала подсчитать сколько у вас нулевых элементов, а остальные просто запишите. Скажем у вас массив из 50 элементов, и вы находите, что нулевых у вас 10, тогда просто пишете a[1]=0, a[2]=0, a[3]=0.... и до a[10]=0, потом записываете остальные, сравнивая с нулем, если равен нулю, то отбрасываете, если не равен записываете.
Хоть вопрос не соответствует правилам портала, задача очень заинтересовала, и я решил написать решение-однострочник на 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();