2013-10-04 41 views
0

如何根据最重复的值对数组进行排序?基于频率对数组进行排序

suppose I have an array [3, 3, 3, 3, 4, 4] 

Expected the result as [3, 4] since 3 is most repeated and 4 is least repeated. 

有什么办法也做呢?

在此先感谢....!

+0

它们是否按排序? – Vishy

+0

@Vishy:尚未排序,它可能也是[3,2,3,4,2,1,3] –

+0

什么语言?在Python中,你只需要'[k for k,v in collections.Counter(arr).most_common()]' – nneonneo

回答

0

这里是做的一种方法:

distictList:获得从所述阵列和存储所有不同值在该

countArray:对于每个i个索引中distinctListcountArray[i]保持distinctList[i]

的发生

现在排序countArray并同时在distinctList上应用相同的交换。

实施例:[3,3,4,4,4]

distinctList [3,4]

countArray [2,3]

降序排序countArray [3,2]排序distinctList同时[4,3] 输出:[4,3]`

0

简单在Python:

data = [3, 2, 3, 4, 2, 1, 3] 

frequencies = {x:0 for x in data} 
for x in data: 
    frequencies[x] = frequencies[x] + 1 
sorted_with_repetitions = sorted(data, key=lambda x:frequencies[x],reverse=True) 
sorted_without_repetitions = sorted(frequencies.keys(), key=lambda x:frequencies[x],reverse=True) 

print(data) 
print(sorted_with_repetitions) 
print(sorted_without_repetitions) 
print(frequencies) 

同样的方法(用于收集不同值并计数出现次数的关联容器,用于自定义比较以使用原始数据或只有不同项目对数组进行排序)适用于Java。

相关问题