Поиск быстрой хэш-функции

Я ищу специальную хэш-функцию. Скажем, у меня есть большой список строк, если я заказываю их по своим хэш-значениям, их нужно упорядочить квази-случайным образом.

Самый важный момент: он должен быть очень быстрым. Я пробовал md5 и sha1, и они используют много мощности процессора.

Столкновения не являются проблемой.

Я использую javascript, поэтому его реализация не должна быть слишком сложной.

Ответ 1

Взгляните на харш Мурмура. Он имеет приятный компромисс между пробелами/столкновением:

http://sites.google.com/site/murmurhash/

Ответ 2

Похоже, что вам нужна функция хэша, используемая в хеш-таблице, а не сортировка, используемая для обнаружения дубликатов или подделки.

Googling предоставит вам массу информации об альтернативных хеш-функциях. Для начала, держитесь подальше от криптографических хэшей подписи (например, MD-5 или SHA-1), они решают еще одну проблему.

Вы можете прочитать this или this или this, для начала.

Ответ 3

Если скорость имеет первостепенное значение, вы можете реализовать простой ad-hoc-хеш, например. возьмите первую и последнюю букву и закажите свою строку последней, а затем первой буквой. Результат будет выглядеть, как вы говорите, "квази-случайным", и это будет быстро. Например, часть моего ответа, отсортированная таким образом, будет выглядеть так:

ca ad-hoc
el like
es simple
gt taking
hh hash
nc can
ti implement
uy you