Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

Сравнение строк для сортировки (Алгоритм)   Найти похожие ветки 

 
mOOx_ ©   (2004-07-13 16:03) [0]

Добрый день.
Вот какая задача возникла. Требуется отсортировать массив строк (список логов) в хронологическом порядке. Может кто подскажет быстрый алгоритм, а то мне кажется, что то, что пришло мне в голову, лучше вообще не пробовать реализовать :)
Заранее спасибо.


 
Тимохов ©   (2004-07-13 16:04) [1]

1. один лог - record имя+ дата
2. запихиваете это все в tlist
3. делаете sort


 
Digitman ©   (2004-07-13 16:17) [2]


> в хронологическом порядке


в этом самом "хренологическом порядке" подразумевать, очевидно. следует, что каждая строка в некоей фикс.позиции (где-то в начале строки) содержит метку времени фикс. длины ? ... хренология ведь - понятие тесно связанное с хреносом, т.е. со временем ... как кажется ...

ну и коль так, то класс TStringlist, имея готовые встр.алгоритмы сортировки, может при опред.раскладе избавить от необходимости изобретения очер.велосипеда ..


 
oldman ©   (2004-07-13 16:22) [3]

Гы... А ты их в массив записывай по мере поступления - они запишутся в хронологическом порядке...
:)))


 
mOOx_ ©   (2004-07-13 16:23) [4]

это мне в голову первоначально и пришло :). Только потом обратно из стринглиста в массив..., конечно я тут может и за доли секунды борюсь, но всетаки...
Но и на этом спосибо, порылся в ВЦЛ, вроде нашел :)...еще раз большое фенкс, буду эксперимантировать...
А может и вообще стоило без массивов, а сразу в лист... может кто со скоростью экспериментировал уже?


 
mOOx_ ©   (2004-07-13 16:25) [5]

я тоже так думал, но вот встретилось пару раз :(


 
Семен Сорокин ©   (2004-07-13 16:27) [6]


> А может и вообще стоило без массивов, а сразу в лист

вот это правильно будет см. [1].


 
Sandman25 ©   (2004-07-13 16:29) [7]

А в чем проблема с самостоятельной реализацией QuickSort?
Скоро уже для for I := 0 to N do будут компоненты искать... :(


 
mOOx_ ©   (2004-07-13 16:35) [8]

Да не в фор дело. Просто сам алгоритм сравнения интересен. Да и сам вопрос даже носит больше любознательный характер :). На готовом-то ясное дело - проще...а вот этот алгоритмик бы глянуть. Хотя в ВЦЛ и так все через АПИ сделано, куда уж быстрее :)...


 
mOOx_ ©   (2004-07-13 16:35) [9]

Да не в фор дело. Просто сам алгоритм сравнения интересен. Да и сам вопрос даже носит больше любознательный характер :). На готовом-то ясное дело - проще...а вот этот алгоритмик бы глянуть. Хотя в ВЦЛ и так все через АПИ сделано, куда уж быстрее :)...


 
Digitman ©   (2004-07-13 16:35) [10]


> А может и вообще стоило без массивов, а сразу в лист


если лог интенсивно обновляется, ни массивы ни стринг-листы, ни иные "ВЦЛ"-листы - не панацея


 
mOOx_ ©   (2004-07-13 16:38) [11]

Да не так уж и быстро - раз в день. Это логи ИИСа. Кстати, может и еще что подскажете вообще по проблеме. См. мой следующий вопрос.


 
Igorek ©   (2004-07-13 19:37) [12]


> Скоро уже для for I := 0 to N do будут компоненты искать...
> :(

С чем и боремся. :-)


> mOOx_ ©   (13.07.04 16:03)  

Вообще совет. Напиши раз и навсегда для себя универсальную быструю сортировку. В том смысле, что сортирует что угодно и требует только ф-цию сравнения. Хотя такая и есть во многих библиотеках.
А ф-цию сравнения ты можешь написать сам - выдирать из двух входных строк дату/время и сравнивать.

---
Ознакомься с шаблонными ф-циями в С++.


 
Думкин ©   (2004-07-14 07:23) [13]

Быстрая сортировка может реализовываться разно, при определенных оптимизациях по сравнению со стандартной(в VCL etc) можно добиться существенного ускорения. У меня при сортировке 50000 строк среднее число сравнений упало с 1 500 000 до 700-800 000. Это конечно далеко не лог, но все-таки.
Описано сие у Бакнелла, примеры на сайте www.diasoft.kiev.ua - как примеры к его книге.

Гы. Можно конечно БД какой-нить худой с индексами.



Страницы: 1 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.075 c
1-1089788187
sapsi
2004-07-14 10:56
2004.07.25
Обработка данных, приходящих по сокету в отдельном потоке


1-1089092804
Baloo
2004-07-06 09:46
2004.07.25
Копировать на расшаренный ресурс


3-1088746612
TchertenOk
2004-07-02 09:36
2004.07.25
Как сохранить данные


1-1089546125
Optimizator
2004-07-11 15:42
2004.07.25
Компонент label


1-1089721797
BillyJeans
2004-07-13 16:29
2004.07.25
TreeView и ScrollBars