Форум: "Система";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизМассивчики! байт и хеши Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c