![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.04.2013
Сообщений: 180
|
![]()
Есть массив записей, который нужно сортировать по дате. Использую для сортировки нижеприведенный код. Но он работает достаточно медленно, 1500 записей сортируются 10-15 секунд
![]() Есть ли более быстрые способы сортировки? Или может можно как-то оптимизировать этот код? Спасибо за ответы. Код:
Последний раз редактировалось garuna; 19.05.2016 в 13:28. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Использовать нормальный алгоритм сортировки вместо пузырьковой сортировки. + не конвертировать строки в дату во время сортировки, а сразу хранить не в виде строк.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 19.05.2016 в 13:33. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
для начала изменить код сортировки на такой:
Код:
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
![]()
по мне так главный тормоз StrToDateTime проще переделать сразу DT на входе, а потом в строку на выходе.
в цикле работать только с типом времени.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
![]() |
![]() |
![]() |
#5 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Цитата:
если этого будет мало - то индексировать только ссылки на запись - не меняя в цикле многократно множество строк (которые могут быть весьма объёмными, к слову!) |
||
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 12.02.2011
Сообщений: 808
|
![]()
если нечего не напутал можно еще так причесать массив
чуть чуть быстрее чем пузырьком. Код:
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Последний раз редактировалось Dvoishnik; 19.05.2016 в 14:07. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Щас ТС скопипастит из #3 и будет крик, что не работает. Чуть подправил код Сержа
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
С 2009 в Дельфи вроде ж завезли TArray<T>.Sort http://docs.embarcadero.com/products...rray_of_T.html кроме Sort у TList.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
концептуально это может выглядеть так:
Код:
Аватар, да! Точно так. Накосячил я! Спасибо! Alex11223, это верно. Вполне возможно (если у ТС современная версия Дельфи) - это подходящий вариант! Последний раз редактировалось Serge_Bliznykov; 19.05.2016 в 14:10. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 13.04.2013
Сообщений: 180
|
![]()
А ведь действительно, избавился от StrToDateTime и стало НАМНОГО быстрее сортировать! =)
За коды благодарю, сейчас буду пробовать, может удастся еще больше ускорить) Версия да, современная, XE3, только не совсем понял как в моем случае через TArray.Sort отсортировать, подкиньте примерчик если не сложно |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка как заставить код формировать сортировку по месту расположения верхней строки сортируемого массива | Trimbl | Microsoft Office Excel | 1 | 29.04.2016 07:27 |
Реализовать сортировку массива записей | Tuns | Помощь студентам | 0 | 26.05.2014 15:51 |
Не знаю как реалтзовать сортировку массива (Паскаль) | WRNWRN | Помощь студентам | 7 | 20.12.2010 22:07 |
Запрос на сортировку записей по должности? | Azeripatriot | Microsoft Office Access | 5 | 26.04.2010 17:06 |