|
2 / 2 / 0
Регистрация: 25.06.2020
Сообщений: 84
|
||||||
Как можно отсортировать по другому?03.08.2020, 15:45. Показов 1441. Ответов 33
Как написать сортирующий алгоритм в ручную чтобы не использовать std::sort ???
какие варианты есть?
0
|
||||||
| 03.08.2020, 15:45 | |
|
Ответы с готовыми решениями:
33
Как можно по другому сделать? Как по-другому можно определить функцию? Как можно первую по другому решить? |
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 03.08.2020, 15:50 | ||
|
0
|
||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 03.08.2020, 17:38 | ||
|
Попросите Равшана с Джамшутом разложить лопаты по размеру. Вы считаете, что они будут делать это не выбором или вставками, а пузырьком? Т.е. пузырек - не интуитивный алгоритм, для которого, к тому же сложнее (по сравнению с выбором или вставками) доказать валидность. Почему во всех книжках пишут, мол, он самый простой, с него и начнем. Может Вы знаете? (Мне правда интересно)
0
|
||
|
Любитель чаепитий
|
|||||||||||||||||
| 03.08.2020, 17:56 | |||||||||||||||||
|
для примера из моего учебного проекта. bubble sort
insert sort
selection sort
лично для меня легче всего из них воспринимается именно сортировка пузырьком.
0
|
|||||||||||||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||||||||
| 03.08.2020, 18:11 | ||||||||
Добавлено через 4 минуты
0
|
||||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 03.08.2020, 18:47 | ||
0
|
||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 03.08.2020, 18:53 | |
|
DrOffset, А как Вы к ней пришли? Мне именно это и интересно.
Вот, допустим, принес я домой стопку книг по программированию. Мне как-то надо засунуть их в шкаф (пустой, иначе вставка - очевидна). И я хочу по алфавиту. Какие рассуждения приведут к пузырьку? Вставки и выбор - очевидны. Пузырек для меня - нонсенс.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 03.08.2020, 18:56 | ||
|
Как-то естественно пришел, без "напряга".
0
|
||
|
Любитель чаепитий
|
||||||||
| 03.08.2020, 19:08 | ||||||||
|
из-за первой оно сортирует неправильно, из-за второй он делает кучу лишних проходов. ну и ваша программа делает обмены, в то время как в сортировке вставками элементы смещаются, чтобы предоставить место вставляемому элементу. семантически это погоды не делает, но вот на практике бьёт по производительности. но для обучения ваша версия, наверное, лучше подойдёт. Кликните здесь для просмотра всего текста
для сравнения я проверил и на моём ПК ваша версия(исправленная) на 100'000 элементов выполняется 5.4сек в релизе.
моя версия выполняется 1.5сек. это среднее из 3-х запусков. элементы я рандомизировал по типу (10, 1, 9, 2, 8, 3...).
0
|
||||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 03.08.2020, 19:18 | ||
|
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 03.08.2020, 19:22 | |
|
avgoor, даже если вы окажетесь правы, то нынешний я - это совсем не то же самое, что тогда
Сравнивать это не очень корректно.
0
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||||
| 03.08.2020, 19:24 | ||||
|
Добавлено через 1 минуту DrOffset, Без рефлексии (во всех смыслах) в нашем деле - никуда, так что - не принимается ![]() Добавлено через 15 секунд DrOffset, Без рефлексии (во всех смыслах) в нашем деле - никуда, так что - не принимается
0
|
||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 03.08.2020, 19:26 | ||
|
0
|
||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 03.08.2020, 19:33 | |
|
DrOffset, ну, доказывали или нет - это вторично. Реплику/аргумент в разговоре отвергнуть можно всегда
0
|
|
|
Любитель чаепитий
|
||
| 03.08.2020, 20:11 | ||
|
одно дело алгоритм из жизни перенести в код, другое дело придумать свой. и при придумывании своего ты думаешь, как код написать, а не как бы ты в жизни этот вопрос решал. и на ум первым приходит вариант с двумя циклами. у меня так было, у DrOffset так же. возможно, у этого и нет какого-то "научного" объяснения.
0
|
||
|
Комп_Оратор)
|
||||||
| 03.08.2020, 20:37 | ||||||
|
avgoor, винтики и книжки перемещаются вместе со своим "местом". Для контейнера список, это естественный способ переупорядочивания. Плохо то, что список неинтуитивен для новичков по сравнению с массивом. А в массиве элементы копируются из одного места в другое. А пузырёк и вправду не так интуитивен как вставки, хотя вполне интуитивен.
Множество для новичка - трепанация черепа. А сортировка состоит в том чтобы ничего не делать. Тоже взрыв мозга. Чем интуитивнее алгоритм тем он, как правило, медленнее. Вот пример:
0
|
||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 03.08.2020, 20:41 | ||
|
Вот есть у нас 10 лопат. Как повесить их на крючки (у нас есть крючки для лопат , (у каждой лопаты есть ушко на ручке), чтобы они висели, скажем, по возрастанию массы?Как именно Вы будете эту операцию производить? Вы, правда, сначала развесите все лопаты на крючки, а потом будете менять соседние, пока не останется инверсий (в чем метод пузырька и состоит)? Или все-таки из оставшихся лопат выберете лопату минимальной массы и повесите ее на следующий крючёк (выбор), или просто берете лопату из кучи и впихиваете ее на свое место (вставка)? В какой жизненной ситуации индивидуум, будучи не знаком с программированием вообще, применит пузырек вместо вставки или выбора?
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 03.08.2020, 20:56 | ||
|
0
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 03.08.2020, 21:41 | ||
|
Поэтому соглашусь с avgoor, интуитивно она самая понятная и простая.
1
|
||
|
Комп_Оратор)
|
||
| 03.08.2020, 23:01 | ||
|
Какое максимальное "разупорядочивание (количество ходов-обменов для постановки на своё окончательное место)" может быть встречено для одной частицы в системе с правилом "возрастание слева-на-право"? Очевидно - это случай для минимальной частицы находящейся в крайнем правом положении. Для перестановки её в крайне левое положения ряда из n частиц требуется n-1 обменов. Если проходя по ряду мы будет менять каждую "неправильную" пару местами, то помимо продвижения самой неудачной (считаем что у нас именно такой случай), мы двигаем и все другие частицы, которые имеют "плохое" соседство. Поскольку все частицы относительно перестановки равноправны то из того что самая минимальная находившаяся справа (самая плохая и трудоёмкая) частица проследует на крайне левое место, следует, что любая другая частица займет наиболее левое место из возможных. Это потому, что у любой такой частицы путь меньше, а количество акций "контроаль-перстановка (если нужно) пары" такое же как и у самой плохой, - то есть, по крайней мере не меньше чем может потребоваться в худшем случае для данной выбранной частицы. Отсюда следует, что количество работы при данной сортировке практически не зависит от степени упорядоченности стартового набора. Что грустно, но понятно. Однако, в принципе, пузырёк вполне очевиден. Стакан газированной воды прозрачен и нагляден.
0
|
||
| 03.08.2020, 23:01 | |
|
Помогаю со студенческими работами здесь
20
Можно ли как ни будь по другому зайти в WI F Как можно по-другому использовать цикл? Как можно по-другому написать условие?
Как из ASP можно подконектиться к другому хосту? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|