将数组划分为两部分,前K项为前K大值的集合,无需有序。
while(true) {
int flag = nums[k];
while(i < k && nums[i] >= flag) {
i++;
}
while(j>k && nums[j] <= flag) {
j--;
}
if (i == j || nums[i] == nums[j]) {
break;
}
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
i = 0;
j = nums.size() -1;
}