您的位置:首页 > 其它

统计数组中各个元素出现的次数,并按照次数从大到小排序

2017-09-25 20:31 489 查看

背景

测试工程师面试的一道笔试题,就是标题中的内容,使用自己熟悉的语言即可。

博主在当时就想到了好几种实现方式,没怎么复习,很多细节没记清

最后花使用了最傻的冒泡排序的方式完成,所以写这篇博客记录一下

python实现

定义一个数组:

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


实现方式一(内置函数 Counter)

from collections import Counter

print(Counter(a))


实现方式二(内置函数 sorted)

首先转换为字典,转换为“元素-出现次数”对:

b = {}
for i in a:
b[i] = a.count(i)


m = sorted(b.items(),key=lambda x:x[1],reverse=True)
print m


实现方式三(冒泡排序)

c = b.items() # b为方法二中的字典,转换为列表
for j in range(len(b)):
for i in range(len(b)-j-1):
if c[i][1] < c[i+1][1]:
c[i] ,c[i+1] = c[i+1],c[i]
print c


Linux命令实现

定义一个数组

array=(1 2 4 3 5 3 5)


取出数组所有元素:



然后将元素间空格转换为换行符:



然后先使用sort进行排序(uniq -c 只能对相邻的数据进行统计):



再使用uniq进行统计:



最后对统计后的数据进行排序:



完整命令

echo ${array[*]}|tr " " "\n"|sort|uniq -c|sort -r   #-r表示逆序


最终效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: