统计数组中各个元素出现的次数,并按照次数从大到小排序
背景
面试时的一道笔试题,内容如题,使用自己熟悉的语言即可。
博主在拿到笔试题的生活想到了好几种实现方式,但是没怎么复习,有些实现方式的细节没记清,最后使用了最绕的冒泡排序的方式完成的,所以写这篇博客记录一下,提醒自己。
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表示逆序
最终效果如下:
文中可能存在描述不正确,欢迎大神们指正补充!
感谢阅读,如果觉得对你有帮助,就在右下角点个赞吧,感谢!
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
分类:
08. Python
, 10. Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律