在 o(n) 中按频率降序排列数组且无重复
sort an array in decreasing order of frequency and no duplicate, in o(n)
我有一个范围为{1....n}的整数数组,我
需要给出一个O(n)的算法
去掉重复的数字,并对数组的元素进行排序
按频率降序排列,从出现的元素开始
最.
我想到了基数排序或某种版本的计数排序,但不知道如何在 o(n) 中进行。
谢谢你的帮助
有几种方法可以做到,一种可能的解决方案:
首先,对所有元素进行计数(计数排序的第一步),并创建直方图,其中count[i] = #times i appeared
。这是 O(n)
.
然后,在删除所有重复项后创建第二个数组(frequency, i)
。这是 O(n)
.
最后,对新数组进行计数排序,按频率比较,输出值。这是 O(n)
.
我有一个范围为{1....n}的整数数组,我 需要给出一个O(n)的算法 去掉重复的数字,并对数组的元素进行排序 按频率降序排列,从出现的元素开始 最.
我想到了基数排序或某种版本的计数排序,但不知道如何在 o(n) 中进行。 谢谢你的帮助
有几种方法可以做到,一种可能的解决方案:
首先,对所有元素进行计数(计数排序的第一步),并创建直方图,其中count[i] = #times i appeared
。这是 O(n)
.
然后,在删除所有重复项后创建第二个数组(frequency, i)
。这是 O(n)
.
最后,对新数组进行计数排序,按频率比较,输出值。这是 O(n)
.