Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.007 c
1-51745
LongIsland
2002-12-04 16:31
2002.12.16
StatusBar, однако...


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


7-51974
PycUS
2002-10-16 00:20
2002.12.16
После ввода текста нажимаем Enter и надо чтоб получился OnClick


8-51841
faf
2002-09-01 10:50
2002.12.16
Как, сделать, спектроанализатор?


3-51629
ALX1
2002-11-28 11:28
2002.12.16
---|Ветка была без названия|---





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский