要实现按照元素出现频率排序数组,你可以使用哈希表来统计每个元素的出现次数,然后根据出现次数对元素进行排序。以下是实现的示例代码:
from collections import Counter
def frequency_sort(nums):
# 使用Counter统计元素出现的频率
counter = Counter(nums)
# 按照元素的频率和元素本身进行排序
sorted_nums = sorted(nums, key=lambda x: (counter[x], x), reverse=True)
return sorted_nums
# 示例整数数组
nums = [1, 1, 2, 2, 2, 3]
# 按照频率排序数组
sorted_nums = frequency_sort(nums)
print("Sorted array by frequency:", sorted_nums)
在上面的代码中,我们首先使用Counter
类统计整数数组中每个元素的出现次数,然后使用sorted
函数对数组进行排序。排序时,我们使用了lambda函数作为排序的关键字,先按照元素的频率进行排序,如果频率相同则按照元素本身的大小进行排序,最后设置reverse=True
来实现按照频率递减排序。
这个算法的时间复杂度取决于排序算法的性能,通常为O(nlogn),其中n是整数数组的长度。