给定一个未排序的整数数组,找到其中位数。
中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。
主要想通过这道题来练习一下快排的代码
int f(vector<int> &nums,int first,int end){
int i=first,j=end;
while(i<j){
while(i<j&&nums[i]<=nums[j])j--;
if(i<j){
int t=nums[i];
nums[i]=nums[j];
nums[j]=t;
}
while(i<j&&nums[i]<=nums[j])i++;
if(i<j){
int t=nums[i];
nums[i]=nums[j];
nums[j]=t;
}
}
return i;
}
void t(vector<int> &nums,int first,int end){
if(first<end){
int q=f(nums,first,end);
t(nums,first,q-1);
t(nums,q+1,end);
}
}
int median(vector<int> &nums) {
// write your code here
t(nums,0,nums.size()-1);
return nums[(nums.size()-1)/2];
}