存一下
// Problem: P1177 【模板】快速排序
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1177
// Memory Limit: 125 MB
// Time Limit: 3000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N];
int n;
int temp[N];
void merge_sort(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 i=l,j=mid+1,k=0;
while(i<=mid && j<=r)
{
if(q[i]<=q[j])
temp[k++]=q[i++];
else
temp[k++]=q[j++];
}
while(i<=mid)
{
temp[k++]=q[i++];
}
while(j<=r)
{
temp[k++]=q[j++];
}
for(i=l,j=0;i<=r;i++,j++)
{
q[i]=temp[j];
}
}
void quick_sort(int a[], int l, int r)
{
if (l >= r)
return;
int x = a[l + r >> 1], i = l - 1, j = r + 1;
while (i < j)
{
do
i++;
while (a[i] < x);
do
j--;
while (a[j] > x);
if (i < j)
swap(a[i], a[j]);
}
quick_sort(a,l,i);
quick_sort(a,i+1,r);
}
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
quick_sort(a, 0, n - 1);
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
}