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

Вниз

Algoritm proverki povtorov   Найти похожие ветки 

 
lensky ©   (2002-08-17 20:02) [0]

Ideia, nushno otseivat" povtory strok


var
ListedDomains : TStringList;

function TFrame1.AddDomain(name: string): integer;
begin
if ((name<>"") and (ListedDomains.IndexOf(name)=-1)) then
begin
ListedDomains.Add(name);
DoSomething;
end
else Result:=0;
end;


S ukazanoi proverkoi, pri liste iz 8000 strok, rabotaet na 40 secund dol"she na moem skromnom kompe...
Est" li bolie optimal"niy metod dlia otseivan"ia odinakovih strok?


 
wicked ©   (2002-08-17 20:11) [1]

для твоего случая придуманы свойства
Sorted - вставка записей в определённом порядке и контроль дубликатов строк... установи его в true...
Duplicates - поведение при вставке дубликата... установи его в dupIgnore...

подробности в справке...


 
lensky ©   (2002-08-17 21:02) [2]

da, spasibo, horoshaia ideia, tol"ko Duplicates dolshen bit" dupError, tk mne ne nushen sam stringlist, a nushno poniat" bila li takai strochka voobshe ili net, a s dupIgnore etogo ne sdelat" IMHO


 
lipskiy ©   (2002-08-18 00:10) [3]

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


 
lipskiy ©   (2002-08-18 00:12) [4]

Есть правда один момент - сортировка стринглиста не чувствительна к регистру и она не отсортирует сначала большие, потом маленькие, поэтому при сравнении строк надо делать LowerCase.


 
MrBeer ©   (2002-08-18 04:03) [5]

esli ti naprimer sostavlaesh etot svoi list iz vneshego iztochnika, to variant s sortirovkoi i udaleniem pri dostatochno bolshih razmerah dannih daleko ne samii optimalnii (osobenno esli mnogo dublikatov). V etom sluchae namnogo bistree budet vospolzovatjsa hash listom. (bolshe informacii na google.com)

best regards.



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
14-95949
IronHawk
2002-08-03 23:59
2002.08.29
Где » архивы старых форумов « ???


1-95847
просто панк
2002-08-17 01:50
2002.08.29
Rich Edit


4-96033
SeF
2002-06-27 02:46
2002.08.29
чужая прога


4-96020
Дмитрий К.
2002-06-26 16:51
2002.08.29
Реакция на нажатие кнопки


3-95726
alex-ran
2002-08-09 14:39
2002.08.29
Глюк QReporta?