| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > quicksort vs. mergesort |
| Автор: Proghat 22.12.2007, 11:48 |
| Что по вашему мнению эффективнее? Что чаще всего пишите вы? Что легче писать и для понимания? |
| Автор: JackYF 22.12.2007, 12:24 |
Оба алгоритма пишутся один раз, после чего используются. n*log(n) vs n*log(n). Ну и что эффективнее? Разница в пределах константы. Легче написать один раз и забыть, это не те алгоритмы, которые меняются каждый месяц. И тот и другой алгоритм можно понять. С точки зрения реализация, я бы назвал следующие существенные различия: - qsort можно сделать на месте, без использования дополнительно массива - mergesort, зато, сохраняет относительный порядок элементов. |
| Автор: sentry 22.12.2007, 14:05 | ||
Тут мнений быть не должно. От задачи зависит И то, и то (ну не пишу, просто подключаю вероятных данных и выбираю более лучший вариант. Если не извращаться с оптимизацией, то обе довольно легки и для написания, и для понимания. Да.
Ну у слияний есть свои преимущества: устойчивость (уже сказали), сложность не зависит от характера входных данных. А из недостатков могу вспомнить лишь использование дополнительной памяти (уже сказали), пропорциональной N. |
| Автор: Void 22.12.2007, 14:27 |
Если так, то лучшая сортировка — это встроенная в стандартную библиотеку. Набор алгоритмов и структур данных в стандартной библиотеке экономит тучу времени, поверьте неоднократному участнику ICPC. В моей практике не встречалось случаев, когда разница между быстрой и сортировкой слиянием была бы существенна (за исключением устойчивости), n*log(n) и ладно. Задумываться приходилось лишь о менее универсальных алгоритмах, например, поразрядной сортировке. |
| Автор: maxdiver 29.1.2008, 23:27 |
| А почему утверждается, что якобы qsort неустойчива? Простейшая модификация, проделанная, например, в стандартной библиотеке C++ (stable_sort), делает её стабильной. |
| Автор: JackYF 30.1.2008, 00:09 |
вообще-то это merge sort |
| Автор: maxdiver 31.1.2008, 10:17 |
| JackYF Афигеть Просто когда-то читал, что типа stable_sort - это немного модифицированная версия sort, из-за модификаций работающая чуть медленнее... Спасибо, что просвятили темного человека )) |