给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。
继续练习快速排序
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);
}
}
void sortIntegers2(vector<int> &A) {
// write your code here
t(A,0,A.size()-1);
}