Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > преобразовать массив |
Автор: ArniLand 16.3.2011, 00:18 |
Нужно преобразовать массив из целых чисел, который состоит из положительных и отрицательных элементов, чтобы вначале располагались положительные элементы, затем отрицательные. Вариант использование сортировки просьба не рассматривать. |
Автор: Earnest 16.3.2011, 07:50 |
Вообще-то любое переупорядочивание можно назвать сортировкой. В данном случае подойдет алгоритм partition из стандартной библиотеки C++. Если у тебя не C++, то несложно реализовать самому: перебираем элементы массива, пока они положительные, как только встретишь отрицательный, начинаешь двигаться с конца, пока не встретишь положительный, затем меняешь их местами; далее продолжаешь это движение навстречу друг другу. |
Автор: Akina 16.3.2011, 08:38 |
И в чём проблема? Обрабатываем масиив, используя 2 указателя. Первый идёт с начала, второй с конца. Первый останавливается, встретив отрицательный элемент, второй - встретив положительный. Если оба указателя остановились - соотв. элементы меняются местами, и процесс продолжается. Когда указатели встретились - процесс завершён. |
Автор: Earnest 16.3.2011, 09:05 |
Akina, респект, у тебя значительно лучше получилось изложить этот алгоритм. ![]() |
Автор: _Y_ 16.3.2011, 15:53 |
Ну если задаться удовлетворением этого странного условия, то можно так:
И никакого намека на вражескую сортировку ![]() |
Автор: _Y_ 16.3.2011, 18:21 |
Akina, поскольку массив целочисленный, то строгое сравнение, конечно. Но мы уже идем в дебри, т.к. про нули в условиях задачи вообще ничего сказано не было. Может нулей вООбще не бывает ![]() ![]() |