查找数组中第三大元素而不进行排序

时间:2016-04-26 03:12:35

标签: arrays find element

我在python中一遍又一遍地遇到这些类似的问题。我想掌握解决这类问题的方法。请帮我。

问题类似于“在数组中找到第3大(或第2大或有时第k大)元素(或项目)而没有排序”有时会出现另一个条件“,其中O或n的比较”或“最小) 时间”。我该如何处理?或者如何为此编写算法?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您不想要第3大号,请将n更改为相应的号码。

largest[0]是第n个最大数字。

n=3
haystack=[1,2,3]
largest=[0]*n
for a in haystack:
    k=n
    for i in range(n):
        if a<=largest[i]:
            k=i
            break
    if k:
        k-=1
        for j in range(k):
            largest[j]=largest[j+1]
        largest[k]=a