Карта ha sh в среднем должна работать хорошо. Используйте «счетчик» для значения, которое увеличивается каждый раз, когда вы видите соответствующий ключ в массиве, а затем используйте эти счетчики для перезаписи вашего массива.
Тем не менее, вызов «сортировки» по-прежнему довольно быстр и легче читать. Хорошая быстрая сортировка действительно может избежать некоторой работы, когда существуют дубликаты, поэтому вам действительно следует выполнить несколько тестов, чтобы убедиться, что более уродливый подход достаточно быстр и оправдан.