![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 2 Всего: 3 |
Есть у меня три варианта сортировки методом пузырька, скажите, пожалуйста, какой из них наиболее быстрый и наиболее правильней.
-------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 3 Всего: 8 |
Не одной из перечисленных реализации не помню...на сколько помню - нужно так:
|
|||
|
||||
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 2 Всего: 3 |
Твой вариант неправилен, для случая когда массив состоит из 2-х элементов Это сообщение отредактировал(а) Delphist - 27.10.2008, 17:20 -------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 3 Всего: 8 |
так протестируй сам...позасекай время на одном массиве и сравни |
|||
|
||||
| Delphist |
|
|||
![]() Delphist Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2145 Регистрация: 3.2.2004 Где: всегда в сети Репутация: 2 Всего: 3 |
Твой вариант неправилен, для случая когда массив состоит из 2-х элементов -------------------- ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др). Когда-то давным-давно использовал это... |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 3 Всего: 8 |
||||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Не нашел принципиальной разницы между первым и вторым вариантами. Они будут равны по скорости. Третий вариант будет быстрее, если массив не вильно рассортирован. Например массив (5,1,2,3,4) в третьем варианте будет отсртирван за один цикл, а то время как в первых вариантах надо 4 цикла (при этом в каждом из этих циклов по 4 подцикла). При этом первые два варианта будут полностью гонять циклы аже если им передать уже сортированный массив. Третий вариант проверит за один раз.
ИМХО, выбирать надо третий. -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
имхо выбирать надо quick sort. От бубл сорта вообще прока нет. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Где ты это нашел в первм посте. Там 3 варианта и спрашивается какой лучше из этих трех! Если бы был вопрос, какой метод сортировки лучше в принципе, тогда твой ответбыл бы уместен.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Копия моего поста с исходников:
Ну что ж... Решил потестировать сортировочки Все тесты проводились на количестве итераций цикла = 100000 + 1. "Время" засекалось с помощью GetTickCount. Вот результаты: Размерность массива = 10: 1 вариант: 62 2 вариант: 63 3 вариант: 47 Быстрая сортировка: 78 Размерность массива = 25: 1 вариант: 281 2 вариант: 297 3 вариант: 297 Быстрая сортировка: 219 Размерность массива = 50: 1 вариант: 1047 2 вариант: 1062 3 вариант: 1047 Быстрая сортировка: 485 Размерность массива = 100: 1 вариант: 4109 2 вариант: 4109 3 вариант: 4110 Быстрая сортировка: 1094 Размерность массива = 200: 1 вариант: 16922 2 вариант: 16781 3 вариант: 16672 Быстрая сортировка: 2250 Размерность массива = 500: 1 вариант: 107687 2 вариант: 106531 3 вариант: 105969 Быстрая сортировка: 6141 Из всех этих тестов напрашивается вывод - все три сортировки примерно равны, разница во времени выполнения начинает замечаться только на больших массивах(в данном случае размером в 500 элементов). То есть самая быстрая получается 3, потом 2, потом 1. Только не понятно зачем нужна эта сортировка пузырьками, когда быстрая сортировка уже на массиве в 100 элементов работает в 4 раза быстрее. А вообще, в связи с недавним конкурсом, из всех тестируемых мною сортировок было выявлено следующее: на маленьких массивах(до 50 элементов, примерно) лучше всего себя показывает сортировка поиском минимального/максимального, а на больших - быстрая сортировка. Тест проводился с помощью такой вот незамысловатой программки:
На процессоре Intel Core 2 Duo E6300 1,86x2. Удачи =) |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
THandle, твой тест немного не корректный, т.к. разные варианты сортировок испытываются на разных массивах. Правильнее было бы испытавать разные варианты на одном и том же массиве.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Poseidon, согласен. Тест немного некорректен, но все таки общие позиции показывает.
|
|||
|
||||
| maFFin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.9.2010 Репутация: нет Всего: нет |
подскажите, какой из этих кодов самый тупой и самый простой? мне нужно с двумя For-ами где один до N а другой до N-1
спасибо |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
||||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |