Преобразовать одномерный массив состоящий из n вещественных элементов
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
преобразовать одномерный массив, состоящий из n вещественных элементов, таким образом, чтобы сначала располагались все элементы, равные 0, а потом — все остальные.
Создать два индекса. Пробежаться в цикле первым индексом по массиву. Если элемент, который определяет первый индекс, равен нулю, то поменять его местами с элементом, который определяет второй индекс, и увеличить второй индекс на единицу.
Или тупо отсортировать массив без учета знака чисел. Но это уже будет O( N log N ).
Для целых:
Для вещественных нужно немного переделать. Это я тебе оставлю. :)
MasterOfAlteran, STL — это круто, но...
ТС говорил о массиве. Это мелочь, конечно, но ТС может не втыкнУть.
stable_partition
хочет дополнительной памяти. И сложность в худшем случае (last — first) * log(last — first), а при наличии доп. памяти — линейная. Поскольку в задаче не ставится условие сохранения порядка, то лучше будетpartition
: не нужно доп. памяти и сложность линейная.Подозреваю, что алгоритм, который я описал, как раз и реализован в
partition
. Только без всяких шаблонов и итераторов ;)Чем смог, тем помог. ))))
Я решил показать stable_partition.