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

Вниз

Массивчики! байт и хеши   Найти похожие ветки 

 
max2057 ©   (2002-10-14 22:27) [0]

Допустим у меня много (очень) массивов байт - длиной всего в несколько сот байт.
Внимание вопрос! Можно ли используя хеширование делать выжимку из таких массивчиков с целью проверки их(массивов) на уникальность с целью отсечения повторяющихся?


 
Opuhshii ©   (2002-10-15 08:17) [1]

"всего в несколько сот байт" imho маловато,..


 
Opuhshii ©   (2002-10-15 08:17) [2]

а делать можно,.. ;))


 
Reindeer Moss Eater   (2002-10-15 09:02) [3]

>max2057 ©
Таким способом можно c успехом проверять уникальность массивов длиной даже 1 байт


 
Reindeer Moss Eater   (2002-10-15 09:04) [4]

Но лучше использовать CompareMem (будет быстрее)


 
Developer   (2002-10-15 10:02) [5]

Я думаю человеку надо сделать чтото на подобее StringList где хранятся уникальные записи. Поэтому могу предложить следуюшее:
Посмотри в Graphics там есть функция GetHashCode она конечно недоступна но ее можно скопировать к себе, и заюзать далее
1. Получаешь хэш код для каждого подмасива.
2. Поиск в масиве массивов таковоже хэш кода.
3. Если он совподает то проверяешь
IsEqual := (Size1 = Size2) and CompareMem(@A1, @A2, Size1);
4. Если масивы идентичны то увеличиваешь счетчик (RefCount) иначе добовляешь свой массив в таблицу.
P.S. Лучше список массивов хранить отсортированным по хэш коду тогда можно сделать поиск строки с заданным хэш кодом половинным делением например. А для доступа к хранимым подмассивам воспользоваться указателем на него а не индексом в списке. Таким образом если все сделано нормально скорость добавления уникальных значений возрастет значительней по сравнению с тем еслибы ты все время использовал CompareMem для каждого массива из списка. Мне приходилось делать список уникальных строк так я скажу что скорость по сравнению с TStringList даже не в какое сравнение идти не может очень быстро работает.


 
max2057 ©   (2002-10-15 10:42) [6]

так попробую



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
1-51765
Андрей Драница
2002-12-04 13:54
2002.12.16
Поддержка .Net в Delphi 7


14-51925
Anatoly Podgoretsky
2002-11-25 07:56
2002.12.16
Именинники 25 ноября


1-51787
Roman_Tutov
2002-12-04 12:53
2002.12.16
Как проверить активен-ли процесс


3-51568
Mad_Ghost
2002-11-27 09:44
2002.12.16
Как избавиться от диалогового окна для ввода пароля при под....


3-51605
Alex7
2002-11-27 20:14
2002.12.16
Проблема с