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


    背景

    面试时的一道笔试题,内容如题,使用自己熟悉的语言即可。

    博主在拿到笔试题的生活想到了好几种实现方式,但是没怎么复习,有些实现方式的细节没记清,最后使用了最绕的冒泡排序的方式完成的,所以写这篇博客记录一下,提醒自己。

    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 " " "
    "|sort|uniq -c|sort -r   #-r表示逆序

     最终效果如下:

  • 相关阅读:
    Mac国内源安装brew
    linux基础命令(二)
    运维查看命令
    初识数据库
    镜像/容器相关操作
    docker基本命令
    Docker简介及部署
    CF1599A Weights 构造
    CSP-S 2021 游记
    GeOP 1.0开发成!
  • 原文地址:https://www.cnblogs.com/Detector/p/7593813.html
Copyright © 2020-2023  润新知