Я хочу сортировать элементы в массиве по их частоте.Сортировать по частоте
Input: 2 5 2 8 5 6 8 8
Output: 8 8 8 2 2 5 5 6
Теперь одно решение это было бы:
- Сортировать элементы с помощью быстрой сортировки или сортировки слиянием. O (nlogn)
- Построить 2D-массив элемента и подсчитать путем сканирования отсортированного массива. O (n)
- Сортировка построенной 2D-массива в соответствии с подсчетом. O (nlogn)
Среди других возможных методов, которые я прочитал, используется двоичное дерево поиска, а другое - Хеширование.
Может ли кто-нибудь предложить мне лучший алгоритм? Я знаю, что сложность не может быть уменьшена. Но я хочу избежать так много обходов.
Возможный дубликат [Сортировка массива с увеличением частоты элемента] (http://stackoverflow.com/questions/13391695/sorting-an-array-by-increasing-frequency-of-element) – Toto