Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизСравнение строк для сортировки (Алгоритм) Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c