Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.04 c
1-1089708229
ko
2004-07-13 12:43
2004.07.25
OnDeactivate


8-1084179857
Клавдия
2004-05-10 13:04
2004.07.25
как склеить в один wav файл последовательно несколько файлов?


1-1089266877
EvgeniyR
2004-07-08 10:07
2004.07.25
Форматированный текс


1-1089272142
Help
2004-07-08 11:35
2004.07.25
Перетаскивание окна


1-1089701488
oss
2004-07-13 10:51
2004.07.25
шифрование данных




   Наверх