Главная страница
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.012 c
1-95864
RazorbladE
2002-08-16 12:30
2002.08.29
Высота строки в DBGrid


3-95650
-=CrazyFish=-
2002-08-07 17:28
2002.08.29
UDF


7-95991
nick_sniper
2002-06-19 07:42
2002.08.29
Как правильно перечитать флоппи-диск


3-95707
Nemesis
2002-08-08 12:20
2002.08.29
---|Ветка была без названия|---


1-95772
Дмитрий Иванов
2002-08-19 03:14
2002.08.29
рисуем меню