Ответ 1
Взгляните на харш Мурмура. Он имеет приятный компромисс между пробелами/столкновением:
Я ищу специальную хэш-функцию. Скажем, у меня есть большой список строк, если я заказываю их по своим хэш-значениям, их нужно упорядочить квази-случайным образом.
Самый важный момент: он должен быть очень быстрым. Я пробовал md5 и sha1, и они используют много мощности процессора.
Столкновения не являются проблемой.
Я использую javascript, поэтому его реализация не должна быть слишком сложной.
Взгляните на харш Мурмура. Он имеет приятный компромисс между пробелами/столкновением:
Похоже, что вам нужна функция хэша, используемая в хеш-таблице, а не сортировка, используемая для обнаружения дубликатов или подделки.
Googling предоставит вам массу информации об альтернативных хеш-функциях. Для начала, держитесь подальше от криптографических хэшей подписи (например, MD-5 или SHA-1), они решают еще одну проблему.
Если скорость имеет первостепенное значение, вы можете реализовать простой ad-hoc-хеш, например. возьмите первую и последнюю букву и закажите свою строку последней, а затем первой буквой. Результат будет выглядеть, как вы говорите, "квази-случайным", и это будет быстро. Например, часть моего ответа, отсортированная таким образом, будет выглядеть так:
ca ad-hoc
el like
es simple
gt taking
hh hash
nc can
ti implement
uy you
Hsieh, Murmur, Боб Дженкин приходит мне на ум. A хорошая страница о хэш-функциях, которая имеет некоторые тесты качества и простой хэш-код S-box.