![]() |
|
|
![]()
|
|
| Proghat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 16.1.2007 Где: Гомель, Беларусь Репутация: нет Всего: нет |
Что по вашему мнению эффективнее? Что чаще всего пишите вы? Что легче писать и для понимания?
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
Оба алгоритма пишутся один раз, после чего используются. n*log(n) vs n*log(n). Ну и что эффективнее? Разница в пределах константы. Легче написать один раз и забыть, это не те алгоритмы, которые меняются каждый месяц. И тот и другой алгоритм можно понять. С точки зрения реализация, я бы назвал следующие существенные различия: - qsort можно сделать на месте, без использования дополнительно массива - mergesort, зато, сохраняет относительный порядок элементов. |
|||
|
||||
| Proghat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 16.1.2007 Где: Гомель, Беларусь Репутация: нет Всего: нет |
Но ведь qsort за n log(n) в лучшем случае? В худшем же n квадрат? Правильно?
P.S. Занимаюсь олимпиадным программированием, поэтому для меня не актуально:
Ну у них одинаковый принцип работы. Разделение массива на 2 части и сортировка их по отдельности. Но с первого взгляда, мне больше приглянулась сортировка слияние. |
|||
|
||||
| sentry |
|
|||
|
Code Monkey ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 29.1.2007 Где: Москва Репутация: нет Всего: 10 |
Тут мнений быть не должно. От задачи зависит И то, и то (ну не пишу, просто подключаю вероятных данных и выбираю более лучший вариант. Если не извращаться с оптимизацией, то обе довольно легки и для написания, и для понимания. Да.
Ну у слияний есть свои преимущества: устойчивость (уже сказали), сложность не зависит от характера входных данных. А из недостатков могу вспомнить лишь использование дополнительной памяти (уже сказали), пропорциональной N. |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 3 Всего: 173 |
Если так, то лучшая сортировка — это встроенная в стандартную библиотеку. Набор алгоритмов и структур данных в стандартной библиотеке экономит тучу времени, поверьте неоднократному участнику ICPC. В моей практике не встречалось случаев, когда разница между быстрой и сортировкой слиянием была бы существенна (за исключением устойчивости), n*log(n) и ладно. Задумываться приходилось лишь о менее универсальных алгоритмах, например, поразрядной сортировке. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
А почему утверждается, что якобы qsort неустойчива? Простейшая модификация, проделанная, например, в стандартной библиотеке C++ (stable_sort), делает её стабильной.
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: нет Всего: 162 |
||||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
JackYF
Афигеть Просто когда-то читал, что типа stable_sort - это немного модифицированная версия sort, из-за модификаций работающая чуть медленнее... Спасибо, что просвятили темного человека )) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |