## 题目描述
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。
给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。
示例1
## 输入
[1,3,5,2,2],5,3
## 返回值
2
golang 代码如下
import (
"fmt"
"testing"
)
/**
*
* @param a int整型一维数组
* @param n int整型
* @param K int整型
* @return int整型
*/
func findKth(a []int, n int, K int) int {
// write code here
if K > n {
return 0
}
ret := sort(a, 0, len(a)-1, K)
return ret
}
func sort(a []int, l, h, K int) int {
middleIndx := l
for l+1 <= h {
if a[l+1] >= a[middleIndx] {
a[l+1], a[middleIndx] = a[middleIndx], a[l+1]
middleIndx++
}
l++
}
fmt.Println(a, l, h, K)
if K == middleIndx+1 {
return a[middleIndx]
} else if K < middleIndx+1 {
return sort(a, 0, middleIndx-1, K)
} else {
return sort(a, middleIndx+1, len(a)-1, K)
}
}
func TestQuick(t *testing.T) {
arr := []int{10, 3, 5, 6, 11, 12, 19, 33}
ret := findKth(arr, len(arr), 1)
fmt.Println(ret)
}
网友评论