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 }