Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Хеш группы чисел

Ответить
Настройки темы
Разное - [решено] Хеш группы чисел

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25


Конфигурация

Профиль | Отправить PM | Цитировать


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

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 22:50, 09-05-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


crashtuak, язык какой?

Отправлено: 22:58, 09-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


crashtuak, массив чисел от строки отличается носителем буквы. Допусти это массив 32-разрядных знаковых целых. Тогда можно применить любой алгоритм хеширования, какой придёт в голову. Например:
Код: Выделить весь код
typedef unsigned long array_hash;
array_hash make_hash(const long *first, const long *last) {
  array_hash hash = 0;
  for(; first<last; ++first) {hash=(array_hash)(hash*91284645 + *first);}
 /*число вбил от балды, желательно нечётное*/
  return hash;
}
если процессор 32-разрядный, то использовать array_hash = unsigned long, Если 64-, то array_hash = unsigned long long

Качество хеша - так себе, но есть большая вероятность, что будут отбиваться последовательности с одинаковым началом, что поможет при последующем линейном поиске. Массивы хранить уже сортированными.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:07, 10-05-2013 | #3


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


pva, спасибо, пробил на имеющихся данных - работает хорошо, повторений не было.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 19:21, 10-05-2013 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Хеш группы чисел

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
как расшифровать хеш md5 в форуме YaBB и перенос пользователей в Drupal koresaram Хочу все знать 15 05-11-2014 15:16
[решено] Не сходятся с указанными хеш-суммы 2-х драйверов liks Хочу все знать 5 22-08-2012 23:58
Доступ - [решено] Хеш паролей TViP Microsoft Windows 2000/XP 3 13-07-2012 09:35
Разное - Хеш пароля. fennomen.bmw Microsoft Windows 2000/XP 2 11-10-2011 12:02
Разное - ХР prof SP3. Член группы Пользователи видит "Назначенные задания" члена группы Админa programfiles Microsoft Windows 2000/XP 1 12-04-2010 14:01




 
Переход