![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Необходимо наилучшим(быстрейшим) способом отсортировать поле от большего значения к меньшему.
Плиз дайте пример на ANSI Cи. quicksort "развернуть" что то не получилось.. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
qsort пойдёт?
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
sergej.z
Уточни, что значит отсортировать поле ??? Если все же отсортировать по полю, то подход от Mayk, с уточнением - наверное все же речь идет о сортировке массива структур по значению поля, тогда
-------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
vadims
feld это поле с немецкого дословно. А по смыслу - массив. С терминами иногда путаюсь Спасибо Mayk, спасибо! То, что надо. |
|||
|
||||
| Dr.Wisdom |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 6.1.2005 Репутация: нет Всего: 0 |
Сортировок много но эта самая простая (вроде)
Ходять слухи что qsort медленная
Писал прямо тут, но идея та. Кажется это называется прямая сортировка. Для больших Max. Для меньших есть Пузырьковая (она дурацкая, но для малых множестьв работает быстрее), концепцию помню, пишу находу:
Есть еще третья классическая но я даже концепцию не помню. Это сообщение отредактировал(а) Dr.Wisdom - 16.7.2005, 10:30 --------------------
VIVA LA RESISTANCE |
||||
|
|||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
QuickSort - быстрейший алгоритм обменной сортировки. N * log(N) с лучшей известной асимптотикой в общем случае. "Слухи", надо полагать - это то, что qsort из стандартной библиотеки C будет тормозить по сравнению с std::sort - из-за расходов на косвенный вызов предиката, когда в std::sort он, как правило, inline-подставляется. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Посмотрел исходник. При n<8 сортируется по тупому (как твой первый алгоритм).
Если нет -- рекурсивно с хитрым алгоритмом. Со стеком. Стек правда лимитирован 30 элементами. Но трудно сказать для каких массивов требуется больше. Рекурсивные алгоритмы сортировки на порядок быстрее обычных, т.к. идут за логарифм. время. вот ссылка: qsort.c Это сообщение отредактировал(а) comcon1 - 16.7.2005, 09:40 |
|||
|
||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Глубина рекурсии не превысит log2(N) + 1. Значит, этого стека достаточно для сортировки массива из примерно 512 миллионов элементов.
С рекурсией это никак не связано. Например, HeapSort тоже имеет скорость O(N * log N), однако рекурсией там не пахнет. В общем, 3-й том Кнута рулит -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| Dr.Wisdom |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 6.1.2005 Репутация: нет Всего: 0 |
Где можно найти описание работы qsort для разных размеров массивов.
Вообще где есть порталы связанные с подобными направлениями. С математическими отступлениями. --------------------
VIVA LA RESISTANCE |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Сначала на Algolist.ru. Там много алгоритмов сортировки. А если задашь вопрос на форуме - получишь еще больше.
А ссылку на qsort я дал |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |