|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.05.2016, 13:24 | #1 |
Форумчанин
Регистрация: 13.04.2013
Сообщений: 180
|
как ускорить сортировку массива записей
Есть массив записей, который нужно сортировать по дате. Использую для сортировки нижеприведенный код. Но он работает достаточно медленно, 1500 записей сортируются 10-15 секунд
Есть ли более быстрые способы сортировки? Или может можно как-то оптимизировать этот код? Спасибо за ответы. Код:
Последний раз редактировалось garuna; 19.05.2016 в 13:28. |
19.05.2016, 13:30 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Использовать нормальный алгоритм сортировки вместо пузырьковой сортировки. + не конвертировать строки в дату во время сортировки, а сразу хранить не в виде строк.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 19.05.2016 в 13:33. |
19.05.2016, 13:32 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
для начала изменить код сортировки на такой:
Код:
|
19.05.2016, 13:38 | #4 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
по мне так главный тормоз StrToDateTime проще переделать сразу DT на входе, а потом в строку на выходе.
в цикле работать только с типом времени.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
19.05.2016, 13:53 | #5 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
если этого будет мало - то индексировать только ссылки на запись - не меняя в цикле многократно множество строк (которые могут быть весьма объёмными, к слову!) |
||
19.05.2016, 13:57 | #6 |
Форумчанин
Регистрация: 12.02.2011
Сообщений: 808
|
если нечего не напутал можно еще так причесать массив
чуть чуть быстрее чем пузырьком. Код:
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Последний раз редактировалось Dvoishnik; 19.05.2016 в 14:07. |
19.05.2016, 14:00 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Щас ТС скопипастит из #3 и будет крик, что не работает. Чуть подправил код Сержа
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
19.05.2016, 14:08 | #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
ЛС отключены Аларом. |
19.05.2016, 14:08 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
концептуально это может выглядеть так:
Код:
Аватар, да! Точно так. Накосячил я! Спасибо! Alex11223, это верно. Вполне возможно (если у ТС современная версия Дельфи) - это подходящий вариант! Последний раз редактировалось Serge_Bliznykov; 19.05.2016 в 14:10. |
19.05.2016, 14:21 | #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 |