С этой конкретной проблемой производительность может быть выше, чем при быстрой сортировке, если предположить, что если два слова встречаются одинаковое количество раз, то не имеет значения, в каком порядке вы их выводите.
Первый шаг: Создать хэш-карту со словами в качестве ключевых значений и частотой в качестве связанных значений. Вы заполните эту хеш-карту при разборе файла. Пока вы это делаете, следите за самой высокой частотой. Этот шаг - сложность O (n).
Второй шаг: Создайте список с количеством записей, равным наибольшей частоте с первого шага. Индекс каждого слота в этом списке будет содержать список слов с частотой, равной индексу. Так слова, которые встречаются в документе 3 раза, попадут, например, в список [3]. Выполните итерацию по хэш-карте и вставьте слова в соответствующие места в списке. Этот шаг - сложность O (n).
Третий шаг: Перебирать список в обратном порядке и выводить все слова. Этот шаг - сложность O (n).
В целом, этот алгоритм выполнит вашу задачу за O (n) времени , а не O (nlogn), требуемый быстрой сортировкой.