取出列表中第N大的数

Posted zxmbky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了取出列表中第N大的数相关的知识,希望对你有一定的参考价值。

技术分享图片
array=list(range(10))
random.shuffle(array)
print(array)
def func1(array,n):
    d,k={},n
    while k>0:
        maxnum,maxindex=-float("inf"),0
        for index,value in enumerate(array):
            if index not in d:
                if value>=maxnum:
                    maxnum=value
                    maxindex=index
        d[maxindex]=maxnum
        k-=1
    return list(d.values())[2]#因为python现在的版本字典默认是有序的,所以可以这么用
每次取出一个最大
技术分享图片方案2,建立一个小根堆,保存前三大的数据,时间复杂度nlogk
技术分享图片
def list2bucket(li,i):
    buckets=[[] for _ in range(10)]
    for val in li:
        digit=val//(10**i)%10
        buckets[digit].append(val)
    return buckets

def bucket2lit(buckets):
    li=[]
    for bucket in buckets:
        for val in bucket:
            li.append(val)
    return li


def radix_sort(li):
    max_val=max(li)
    i=0
    while 10**i<=max_val:
        li=bucket2lit(list2bucket(li,i))
        i+=1
    return li

print(radix_sort(array)[-3])
基数排序,然后取出第三大的数.假设最大数位数为i,时间复杂度为in

 

以上是关于取出列表中第N大的数的主要内容,如果未能解决你的问题,请参考以下文章

寻找数组中第K大的数

找数组中第K大的数 请教

求C语言程序,从1~2012中取k个数,取出的数中任意两个数之差不能为5或8,求k的最大值

用sql语句查询表中第N(1,2,3等)大的数

C++ 输入一组数组 找出这个数组中第2大的数 这个函数 怎么写

查找无序数组中第K大的数