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
}