python实现查找数组中第k大的数

  • Post author:
  • Post category:python


本文用python3实现查找数组中第k大的数。采用快速排序的方法实现。


def findKth(s, k):
    return findKth_c(s, 0, len(s) - 1, k)


def findKth_c(s, low, high, k):
    m = partition(s, low, high)
    if m == len(s) - k:
        return s[m]
    elif m < len(s) - k:
        return findKth_c(s, m+1, high, k)
    else:
        return findKth_c(s, low, m-1, k)


def partition(s, low, high):
    pivot, j = s[low], low
    for i in range(low + 1, high + 1):
        if s[i] <= pivot:
            j += 1
            s[i], s[j] = s[j], s[i]
    s[j], s[low] = s[low], s[j]
    return j


for _ in range(int(input())):
    s = list(map(int, input().split()))
    k = int(input())
    print(findKth(s, k))

测试用例:



版权声明:本文为qq_36911138原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。