![]() |
|
Модераторы: Akina |
![]()
|
|
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Собственно у меня такой вопрос: здесь http://forum.vingrad.ru/index.php?showforum=13 описаны алгоритмы сортировки массивов. Какой самый предпочтительный, исходя из того, что требуется что-то одно -
1) или высокая скорость (но памяти можно тратить много), либо наоборот: 2) скорость не ахти какая, но зато памяти расходуестя совсем немного. Моя прога, в которой используется два вида сортировки: пузырьковая и сортировка методом простого выбора. Timer1 имеет interval = 100 Label1, Label2 - время начала и конца сортировки соответственно. Label3 - декорация с надписью "Число элементов в массиве:" Text2.Text - укажем число элементов массива Command1, Command2 - сортировка методом пузырька и сортировка методом простого выбора соответственно.
Что лучше? Если надо сортировнуть -------------------- i_i (';') (V) ![]() |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Мне попадалась программа, которая в красках показывает результаты работы различных алгоритмов. Поищи, может найдешь у нас на форуме, но я не смог ее найти...
А вообще посмотри статью про ассемблер и воспользуйся этими знаниями после того, как выберешь алгоритм. А еще лучше найди готовый алгоритм на асме и постарайся заделать его в свою прогу. Думаю прирост скорости будет солидный. [off]Ну и подпись у тебя. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
(2)насколько я знаю, быстрая сортировка не использует дополнительной памяти (если не считать какого-то конечного числа ячеек, не зависящего от длины массива), но она не всегда дает время пропорциональное n*log n (зависит от удачного выбора разделяющего элемента)
(1)есть сортировка слиянием, она гарантирует n*log n, но использует дополнительно столько же памяти, сколько нужно для хранения самого массива... -------------------- qqq |
|||
|
||||
| __Sergey__ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 21.1.2005 Репутация: 4 Всего: 4 |
- если 99% списка уже отсортировано используем пузырьковую сортировку;
- если список мал - сортировка выбором; - если значения находятся в связанном списке - блочная сортировка на основе связанного списка; - если элементы в списке - целые числа, разброс значений к-рых невелик (до нескольких тыс.) - сортировка подсчетом; - если значения лежат в широком диапазоне и не являются целыми числами - блочная сортировка на основе массива; - если не можем тратить доп. память, к-рая требуется для блочной сортировки, исп-ем быструю сортировку. для больших списков можно пользовать пирамидальную или сортировку слиянием (работают медленнее быстрой сорт-ки). пузырек хорош для почти отсортированных списков, больше нигде ;) быстрая сортировка приводит к проблемам при большом кол-ве одинаковых значений. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Voldemar2004 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Чтобы не изобретать велосипед я просто воспользовался готовыми алгоритмами (перевел с Си на VB).
Конечно, на этих примерах, где сортируются всего-то 10 элементов разницы я не увижу. Даже 1000 элементов - разница заметна с трудом на машинах, на которых я работаю. Может действительно лучше на Си написать, когда задача того стоИт. А вообще овчинка не стоит выделки - в среднем: 512 мб памяти и процессоры 2,4 Гц Xeon/Pentium/Celeron
Akina, хорошая статья. Ну, а по поводу этих 2-ух сортировок, что можете сказать?
И эта:
Там еще есть Shell-сортировка (что за сортировка? с англ - "оболочка"). И бинарная. Извините, что пришлось так много приводить кода на Си, но особого труда перевести на VB не составит, если вспомнить синтаксис Си. И еще последний вопрос - на http://algolist.manual.ru/sort/faq/q12.php говорится о том, что SelectSort, BubbleSort, ShellSort - на практике не применяются ("ну зачем тогда их упоминать? так, для галочки что-ли?"). -------------------- i_i (';') (V) ![]() |
||||||||||
|
|||||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Ну в том числе и для галочки... а вообще - они максимально просты в программной реализации, пишутся "на лету" - при отсутствии готового кода можно временно в тест-целях использовать их... или использовать их для сравнительных тестов. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |