题解 | #寻找第K大#

寻找第K大

https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf

package main

/**
 * 
 * @param a int整型一维数组 
 * @param n int整型 
 * @param K int整型 
 * @return int整型
*/
func findKth( a []int ,  n int ,  K int ) int {
    arr := a
	quickSort(arr, 0, len(arr)-1)
	return arr[K-1]
}

func quickSort(arr []int, left, right int) {
	if left > right {
		return
	}
	pivot := getPivot(arr, left, right)
	quickSort(arr, left, pivot-1)
	quickSort(arr, pivot+1, right)
}

func getPivot(arr []int, left, right int) int {
	pivot := left
	for left < right {
		for left < right && arr[right] <= arr[pivot] {
			right--
		}
		for left < right && arr[left] >= arr[pivot] {
			left++
		}
		arr[right], arr[left] = arr[left], arr[right]
	}
	arr[pivot], arr[left] = arr[left], arr[pivot]
	return left
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务