Python调用堆排序,获取第k大元素
没有使用题中说的快排,先试试堆排序
题目描述
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。
给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。
测试样例:
[1,3,5,2,2],5,3
返回:2
# -*- coding:utf-8 -*-
import heapq
class Finder:
def findKth(self, a, n, K):
# write code here
heapq.heapify(a)
list1 = []
for i in range(K):
list1.append(a[i])
heapq.heapify(list1)
for item in a[K:]:
if list1[0] < item:
heapq.heapreplace(list1, item)
list1.sort()
return list1[0]