#include<iostream>
#include<cstdio>
using namespace std;
void swap(int &x, int &y) {
int tmp = x;
x = y;
y = tmp;
}
void quickSort(int * & a,int left, int right) { //数组的引用
if (left >= right) //跳出递归调用
return;
int key = a[left];
int keyPosition = left; //记录参数的初始值
int rightPosition = right;
int leftPosition = left;
while (left < right) {
//右指针左移 当a[右]<key时跳出、
//记录此时的 right值(和a[left]交换)
while (left < right && a[right] >= key) { //右指针移动
right = right - 1;
}
//左指针右移 当a[左]>key时跳出
//记录此时的 left值(和a[right]交换)
while (left < right && a[left] <= key) {
left = left + 1;
}
swap(a[left], a[right]);
if (left == right) {
swap(a[keyPosition], a[left]);
}
quickSort(a, leftPosition, left - 1);
quickSort(a, left + 1, rightPosition);
}
}
int main() {
int n;
//输入的待排序的数字的个数
cout << "输入数字个数:";
cin >> n;
int* arr = (int*)malloc(sizeof(int) * n);
//输入数字
cout << "输入待排序的数字:";
for (int i = 0; i < n; ++i) {
cin >> arr[i];
}
quickSort(arr, 0, n - 1);
for (int j = 0; j < n; ++j) {
cout << arr[j] << " ";
}
return 0;
}