將數組劃分為兩部分,前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;}