算法功能描述:
返回数组nums中第K小的元素。
算法工作机制描述:
选择数组nums最左边的数数字作为锚点:大于nums[l]的元素移到nums[l]右边,小于nums[l]的元素移到nums[l]左边。
int getTopK(vector& nums, int l, int r, int K) { int i = l, j = r; while (i < j) { while (i < j && nums[j] >= nums[l]) --j; while (i < j && nums[i] <= nums[l]) ++i; swap(nums[i], nums[j]); } swap(nums[i], nums[l]); if (i == K) return nums[K]; else if (i < K) return getMid(nums, i + 1, r, K); else return getMid(nums, l, i - 1, K); }



