class Solution {public: void quick_sort(vector<int>& q, int l, int r){ if(l >= r) return; int x = q[l + r >> 1]; int i = l - 1, j = r + 1; while(i < j){ do i++; while(q[i] < x); do j--; while(q[j] > x); if(i < j) swap(q[i],q[j]); } quick_sort(q,l,j); quick_sort(q,j+1,r); } void merge_sort(vector<int>& q, int l, int r){ if(l >= r) return; int mid = l + r >> 1; merge_sort(q,l,mid); merge_sort(q,mid+1,r); int k = 0 , tmp[r-l+1]; int i = l , j = mid + 1; while(i <= mid && j <= r){ if(q[i] <= q[j]) tmp[k++] = q[i++]; else tmp[k++] = q[j++]; } while(i <= mid) tmp[k++] = q[i++]; while(j <= r) tmp[k++] = q[j++]; for(int i = l , j = 0 ; i <= r ; i++,j++) q[i] = tmp[j]; } vector<int> sortArray(vector<int>& nums) { merge_sort(nums,0,nums.size() - 1); quick_sort(nums,0,nums.size() - 1); return nums; }};