|
1 / 1 / 2
Регистрация: 07.04.2012
Сообщений: 38
|
||||||
Сортировка отрицательных и положительных элементов11.02.2013, 14:44. Показов 18319. Ответов 8
Метки нет (Все метки)
Всем привет!
Есть такое задание: Упорядочить массив так, чтобы все положительные числа были расположены сначала по возростанию, а все отрицательные - в конце по убыванию. Как поставить правильно условия, чтобы отбирались сначала положительные, потом отрицательные? Или лучше сделать это в двух подпрограммах? Буду рад любой помощи. Благодарю! P.S. Пробовал различные варианты - не получалось. На форуме искал - не нашел. Вот получилась просто сортировка по возростанию (подпрограмма)
Получилось!!! Все намного проще чем Я думал. Скидываю программку может кому пригодиться:
0
|
||||||
| 11.02.2013, 14:44 | |
|
Ответы с готовыми решениями:
8
Сортировка по возрастанию, сумма положительных и произведение отрицательных элементов массива
Сортировка положительных и отрицательных чисел в файле |
|
return (true);
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
|
||
| 11.02.2013, 15:00 | ||
|
0
|
||
|
1 / 1 / 2
Регистрация: 07.04.2012
Сообщений: 38
|
||
| 11.02.2013, 18:20 [ТС] | ||
. У меня не получаеться в подпрограмме выбрать только положительные (или отрицательные). Я не знаю куда это if впихнуть.
0
|
||
|
Супер-модератор
|
||||||
| 11.02.2013, 18:48 | ||||||
|
Pavel_n, всё проще, не надо вообще никаких if, кроме того что у тебя уже есть:
стало: <1, 2, 4, 5, 17, 18, -11, -22, -88, -92>
2
|
||||||
|
1 / 1 / 2
Регистрация: 07.04.2012
Сообщений: 38
|
|
| 11.02.2013, 21:44 [ТС] | |
|
UI, что Я могу сказать. Благодарю! Работает! +
0
|
|
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
||||||||||||||||||||||||||
| 20.10.2022, 08:55 | ||||||||||||||||||||||||||
|
volvo, привет, твой пост #4 спас меня
![]() ------------------------------------------------------------------------ #1 У меня очень похожая задача, правда не 2 категории ( положительные, отрицательные ), а 3 - еще добавляются нулевые элементы. Сортировка такого плана: нулевые, затем положительные ( ASC ), затем отрицательные ( DESC ) Мне люто повезло, т к оказалось, что можно объединить категорию нулевых и положительных, превратив ее в неотрицательные В этом случае поменялись немного условия:
![]() Но есть такой момент, а если бы надо было сортироваться по правилу: <положительные на убывание><нули><отрицательные на возрастание> В этом случае ведь никакие 2 категории не объединяются в одну. К чему бы это привело? В твоем посте #4 стоит 3 подусловия ( плюс-плюс, минус-минус, плюс-минус ) и это ТОЛЬКО для двух групп чисел ( полож. и отр. ), а если будет ТРИ группы, то кол-во проверок не будет расти по степени какой-нибудь...Т е нужно уже сравнивать 0-плюс, 0-минус, плюс-плюс и т.п. В этом случае if превратится в что-то страшное. ------------------------------------------------------------------------ #2 Как считаешь, может имеет немного декомпозировать код и вынести эту проверку в if в отдельную функцию, для моей задачи получилась такая:
Плюсы в том, что туда можно забить множество доп. проверок if, не потеряв в читабельности сильно. Для случая, когда 3 группы необъединяются их будет вроде около 7 штук... Тогда перед обменом элементов такой вызов:
#3 Я так понимаю, что для сортировки ты выбрал разновидность обменной ( похоже чем-то на пузырек ) со сложностью O( n^2 ), где n - количество элементов сортируемого массива. Но что-то до конца не понимаю, а можно ли сейчас, используя эту проверку
Речь только про сортировки "in place", т е, например не через двоичное дерево. Такое чувство, что нет. Например в Хоара ведь получаем подпоследовательности через опорный элемент и все бьется лишь на 2 группы как бы. Хм... ------------------------------------------------------------------------ #4 Давай рассмотрим еще такой вариант, когда групп не 2 и не 3, а пусть 20. Например, есть массив объектов типа "Спортсмен". У него есть фио, ДР, возраст, вес и др. поля и есть ключевое поле "Вид спорта" ( футбол, хоккей и т.п.). Элементов много ( пусть 20К ), видов спорта разных ровно 20 шт. И нужно агрегировать спортсменов по виду спорта ( group by ), а внутри каждой группы отсортировать по разным полям( разные типы данные ). Например, футболистов по фио, хоккеистов по ДР и т.д. В этом случае составлять все возможные проверки в if, наверное, не стоит)) Тут для каждой группы потребуется свое условие для сортировки? Т е будет 20 функций? Для сортировки уже применить, например, некое подобие хеш-таблицы ( по названию спорта возвращает №слота ) на цепочках. И вставлять в цепочку ( это ЛОС будет, НЕ массив ) нужного спортсмена ( или ссылку на него ), сохраняя упорядоченность. Издалека похоже на карманную сортировку, очень издалека, ИМХО. Или вообще все не так? Спс. за внимание и сорри, что забрал у тебя кучу времени ( а я знаю, что оно очень дорого стоит ) на чтение всего этого...
0
|
||||||||||||||||||||||||||
|
383 / 280 / 112
Регистрация: 28.04.2015
Сообщений: 1,726
|
|
| 20.10.2022, 10:43 | |
|
блин, точно)
это получается неотрицательные по убыванию + отрицательные на возрастание - 2 группы, эх... т е получается 0 всегда можно "присоединить" к какой-нибудь группе) ну хорошо, но все равно, с 3 группами ( которые нельзя объединить ) ведь все усложняется? ps: я уж давно разочаровал, мне терять нечего)
0
|
|
|
фрилансер
6453 / 5654 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
|
||||||
| 20.10.2022, 11:49 | ||||||
|
эх, вот, за что я люблю STL
![]()
2
|
||||||
| 20.10.2022, 11:49 | |
|
Помогаю со студенческими работами здесь
9
Вывод отрицательных и положительных чисел из последовательности и сортировка Массив: Вычислить количество нулевых элементов, сумму положительных элементов и среднее значение отрицательных элементов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|