go + 快排(数组倒序)
/**
*
* @param a int整型一维数组
* @param n int整型
* @param K int整型
* @return int整型
*/
func findKth( a []int , n int , K int ) int {
// write code here
find := 0
var sorts func(l, r int, K int)
// 对数组进行倒叙排序,这样的话,数组就是从大到小排列的
sorts = func(l, r int, K int) {
ll := l
rr := r
target := a[l]
// 倒序
for l < r {
// target >= a[r] 倒序
for l < r && target >= a[r] {
r--
}
a[l] = a[r]
// target <= a[l] 倒序
for l < r && target <= a[l] {
l++
}
a[r] = a[l]
}
a[l] = target
// 当前位置等于k
if l == K{
find = target
return
}else if l > K {
// 当前位置大于k, 则说明 第k大 在左侧
sorts(ll, l-1, K)
}else if l < K {
// 当前位置小于k,说明第k大在 右侧
sorts(l+1, rr, K)
}
}
// 由于数组下表是从0开始,所以 第K大 对应数组 第k-1个
// 对数组进行倒叙排序
sorts(0, len(a)-1, K-1)
return find
} 
京公网安备 11010502036488号