转载:第二题 int q_sort_process(vector<int>& v, int left, int right) { int l = left + 1; int r = right - 1; while (l <= r) { while (v[l] <= v[left] && l <= r) { l++; } while (v[r] >= v[left] && l <= r) { r--; } if (l <= r) { swap(v[l], v[r]); } } swap(v[r], v[left]); for (int i = 0; i < v.size(); i++) { cout << v[i] << " "; } cout << endl; return r; } void q_sort(vector<int> &v,int left,int right) { if (left + 1 < right) { int mid = q_sort_process(v, left, right); q_sort(v, left, mid); q_sort(v, mid+1, right); } } int main() { int n; while (cin >> n) { vector<int> v(n, 0); for (int i = 0; i < n; i++) { cin >> v[i]; } q_sort(v, 0, n); } return 0; }