Поиск:

Ответ в темуСоздание новой темы Создание опроса
> quicksort vs. mergesort, сравнение алгоритмов сортировки 
:(
    Опции темы
Proghat
  Дата 22.12.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 16.1.2007
Где: Гомель, Беларусь

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



Что по вашему мнению эффективнее? Что чаще всего пишите вы? Что легче писать и для понимания?
PM MAIL WWW ICQ Skype Jabber   Вверх
JackYF
Дата 22.12.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Proghat @  22.12.2007,  11:48 Найти цитируемый пост)
Что чаще всего пишите вы?

Оба алгоритма пишутся один раз, после чего используются.


Цитата(Proghat @  22.12.2007,  11:48 Найти цитируемый пост)
Что по вашему мнению эффективнее?

n*log(n) vs n*log(n). Ну и что эффективнее? Разница в пределах константы.


Цитата(Proghat @  22.12.2007,  11:48 Найти цитируемый пост)
Что легче писать и для понимания? 

Легче написать один раз и забыть, это не те алгоритмы, которые меняются каждый месяц.
И тот и другой алгоритм можно понять.

С точки зрения реализация, я бы назвал следующие существенные различия:
- qsort можно сделать на месте, без использования дополнительно массива
- mergesort, зато, сохраняет относительный порядок элементов.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Proghat
Дата 22.12.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 16.1.2007
Где: Гомель, Беларусь

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



Но ведь qsort за n log(n) в лучшем случае? В худшем же n квадрат? Правильно?

P.S. Занимаюсь олимпиадным программированием, поэтому для меня не актуально:

Цитата(JackYF @  22.12.2007,  10:24 Найти цитируемый пост)
Легче написать один раз и забыть, это не те алгоритмы, которые меняются каждый месяц.



Цитата(JackYF @  22.12.2007,  10:24 Найти цитируемый пост)
И тот и другой алгоритм можно понять.

Ну у них одинаковый принцип работы. Разделение массива на 2 части и сортировка их по отдельности. Но с первого взгляда, мне больше приглянулась сортировка слияние.
PM MAIL WWW ICQ Skype Jabber   Вверх
sentry
Дата 22.12.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Code Monkey
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.1.2007
Где: Москва

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



Цитата(Proghat @  22.12.2007,  13:18 Найти цитируемый пост)
Что по вашему мнению эффективнее?

Тут мнений быть не должно. От задачи зависит  smile

Цитата(Proghat @  22.12.2007,  13:18 Найти цитируемый пост)
Что чаще всего пишите вы?

И то, и то (ну не пишу, просто подключаю  smile ) Потом сравниваю время на наиболее 
вероятных данных и выбираю более лучший вариант.

Цитата(Proghat @  22.12.2007,  13:18 Найти цитируемый пост)
Что легче писать и для понимания?

Если не извращаться с оптимизацией, то обе довольно легки и для написания, и для понимания.

Цитата(Proghat @  22.12.2007,  15:01 Найти цитируемый пост)
В худшем же n квадрат? Правильно?

Да.

Цитата(Proghat @  22.12.2007,  15:01 Найти цитируемый пост)
Но с первого взгляда, мне больше приглянулась сортировка слияние.

Ну у слияний есть свои преимущества: устойчивость (уже сказали), сложность не зависит от характера входных данных.
А из недостатков могу вспомнить лишь использование дополнительной памяти (уже сказали), пропорциональной N.
PM MAIL   Вверх
Void
Дата 22.12.2007, 14:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Цитата(Proghat @  22.12.2007,  15:31 Найти цитируемый пост)
Занимаюсь олимпиадным программированием

Если так, то лучшая сортировка — это встроенная в стандартную библиотеку. Набор алгоритмов и структур данных в стандартной библиотеке экономит тучу времени, поверьте неоднократному участнику ICPC.
В моей практике не встречалось случаев, когда разница между быстрой и сортировкой слиянием была бы существенна (за исключением устойчивости), n*log(n) и ладно. Задумываться приходилось лишь о менее универсальных алгоритмах, например, поразрядной сортировке.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
maxdiver
Дата 29.1.2008, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А почему утверждается, что якобы qsort неустойчива? Простейшая модификация, проделанная, например, в стандартной библиотеке C++ (stable_sort), делает её стабильной.
PM MAIL WWW ICQ   Вверх
JackYF
Дата 30.1.2008, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(maxdiver @  29.1.2008,  22:27 Найти цитируемый пост)
stable_sort

вообще-то это merge sort smile))


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
maxdiver
Дата 31.1.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



JackYF
Афигеть smile
Просто когда-то читал, что типа stable_sort - это немного модифицированная версия sort, из-за модификаций работающая чуть медленнее... smile
Спасибо, что просвятили темного человека ))
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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