寻找数组中第K大的数(Go语言版)
题目:
有一个整数数组,请你根据快速排序的思路,找出数组中第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) }