Главная страница
    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.006 c
4-51992
Nick N A
2002-10-27 06:58
2002.12.16
Enum & CallBack


14-51884
iLover
2002-11-22 19:15
2002.12.16
http://perl.mastak.ru/cgi-bin/gb.pl


3-51582
Jovanny
2002-11-26 17:38
2002.12.16
Запрос из запросов.


14-51891
Malder
2002-10-21 22:47
2002.12.16
Начинающим программистам. Этап 1


1-51751
Torrin
2002-12-04 10:38
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский