题目:
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。
给定一个整数数
输入
[1,3,5,2,2],5,3
返回值
给定数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。
解法1:快排
func findKth( a []int , n int , K int ) int {
// write code here
mid ,i := a[0],1
first,tail := 0,n-1
for first < tail{
if a[i] < mid {
a[i],a[tail] = a[tail],a[i]
tail--
}else{
a[i],a[first] = a[first],a[i]
first++
i++
}
}
a[first] = mid
if K-1 == first {
return mid
}
if K -1 < first {
return findKth(a[:first],first,K)
}
return findKth(a[first+1:],n-first-1 ,K-first-1)
}