Поиск:

Ответ в темуСоздание новой темы Создание опроса
> преобразовать массив 
:(
    Опции темы
ArniLand
Дата 16.3.2011, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



Нужно преобразовать массив из целых чисел, который состоит из положительных и отрицательных элементов, чтобы вначале располагались положительные элементы, затем отрицательные. Вариант использование сортировки просьба не рассматривать.
PM MAIL   Вверх
Earnest
Дата 16.3.2011, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Вообще-то любое переупорядочивание можно назвать сортировкой. В данном случае подойдет алгоритм partition из стандартной библиотеки C++.
Если у тебя не C++, то несложно реализовать самому: перебираем элементы массива, пока они положительные, как только встретишь отрицательный, начинаешь двигаться с конца, пока не встретишь положительный, затем меняешь их местами; далее продолжаешь это движение навстречу друг другу.


--------------------
...
PM   Вверх
Akina
Дата 16.3.2011, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



И в чём проблема?
Обрабатываем масиив, используя 2 указателя. Первый идёт с начала, второй с конца. Первый останавливается, встретив отрицательный элемент, второй - встретив положительный. Если оба указателя остановились - соотв. элементы меняются местами, и процесс продолжается. Когда указатели встретились - процесс завершён.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Earnest
Дата 16.3.2011, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Akina, респект, у тебя значительно лучше получилось изложить этот алгоритм. smile 


--------------------
...
PM   Вверх
_Y_
Дата 16.3.2011, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(ArniLand @  16.3.2011,  00:18 Найти цитируемый пост)
использование сортировки просьба не рассматривать

Ну если задаться удовлетворением этого странного условия, то можно так:
  • Создаем два новых пустых массива (MP и MM) того же размера, что и исходный (M0).
  • В цикле проходим по элементам M0. Если элемент больше нуля - кладем его в MP, если меньше - в MM.
  • Копируем заполненную часть MM в конец MP.
Обработка нулевых значений здесь не предусмотрена, но как быть с ними - ежику понятно - третий массив можно использовать, например.

И никакого намека на вражескую сортировку smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 16.3.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(_Y_ @  16.3.2011,  16:53 Найти цитируемый пост)
Обработка нулевых значений здесь не предусмотрена, но как быть с ними - ежику понятно - третий массив можно использовать, например.

В зависимости от того, какое сравнение с нулём (строгое или нет) будет использовано, все нули ссыплются в один из массивов... но поскольку ноль принято считать всё-таки числом неотрицательным, то ему место среди положительных...
А можно просто изначально МР инициализировать нулями, а при обработке нули тупо игнорировать. Правда, это увеличит вдвое количество сравнений.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 16.3.2011, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Akina, поскольку массив целочисленный, то строгое сравнение, конечно. 

Но мы уже идем в дебри, т.к. про нули в условиях задачи вообще ничего сказано не было. 

Может нулей вООбще не бывает smile Их .... это самое .... русские мужики придумали. Ну .... чтобы деньги не платить smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.