题解 | #最小的K个数#
最小的K个数
http://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf
package main //修改快排,平均nlogn,最坏On^2 ; 空间平均logn,最坏On func GetLeastNumbers_Solution(input []int, k int) []int { if k == 0 { return []int{} } quickSort(input, 0 , len(input) - 1) return input[:k] } func quickSort(nums []int, left, right int) { if left > right { return } i, j, base := left, right, nums[left] //优化点,随机选基准 for i < j { for nums[j] >= base && i < j { j-- } for nums[i] <= base && i < j { i++ } nums[i], nums[j] = nums[j], nums[i] } nums[i], nums[left] = nums[left], nums[i] quickSort(nums, left, i - 1) quickSort(nums, i + 1, right) }