Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
4-96032
giokoedlogin
2002-06-27 18:16
2002.08.29
как мне перехватить нажатие клавы


1-95793
Андрусь
2002-08-19 18:27
2002.08.29
Вывод диалога после загрузки главного окна


1-95877
Dinara
2002-08-18 13:24
2002.08.29
Создать Word-документ с таблицей - куда копать?


14-95947
TTCustomDelphiMaster
2002-08-03 16:09
2002.08.29
Проблема с XP


1-95735
Kif
2002-08-16 20:09
2002.08.29
Есть вопрос...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский