凑合着看吧
```cpp
#include<stdio.h>
#include<iostream>
#include<cstdlib>
using namespace std;
int a[2000000];
void qsort(int a[],int L,int R) //快速排序
{
printf("L=%d R=%d\n",L,R),_sleep(500);
if(L>=R)
return;
int i,j,key;
i=L,j=R,key=a[i];
while(j>i)
{
printf("(i,j):%d %d\n",i,j),_sleep(500);
while(j>i&&a[j]>key)j--;
//a[i]=a[j],
if(i<j)a[i++]=a[j];
while(j>i&&a[i]<key)i++;
if(i<j)a[j--]=a[i];
}
a[i]=key;
cout<<"Sorted:";
for(int i=L;i<=R;++i)cout<<a[i]<<' ';cout<<'\n';
//qsort(a,0,i-1);
qsort(a,L,i-1);
qsort(a,i+1,R);
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++)
cin>>a[i];
qsort(a,0,m-1);
for(int i=0;i<m;i++)
printf("%d ",a[i]);
}
```
by cat_lover1 @ 2024-02-02 18:26:38
为什么不直接用sort(a,a+m)呢?
by Ling_C @ 2024-02-02 18:40:26
@[jumao123](/user/1278698) 这道题n比较小,为什么不直接记录每个数出现的数量直接水过呢?
**上代码**
```cpp
#include <bits/stdc++.h>
using namespace std;
int n, m, a[1000], x;
int main() {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
cin >> x;
a[x]++;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= a[i]; j++) cout << i << " ";
}
return 0;
}
```
~~不然n就是废废的~~
by __Rickysun__ @ 2024-02-02 18:49:12
@[Ling_C](/user/564979) 我试过了,也会超
by __Rickysun__ @ 2024-02-02 18:49:37
@[Rickysun](/user/824205) 我用sort AC了
```
#include<bits/stdc++.h>
using namespace std;
int a[2000005];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a[i];
}
sort(a+1,a+m+1);
for(int i=1;i<=m;i++){
cout<<a[i]<<" ";
}
return 0;
}
```
by Ling_C @ 2024-02-03 09:37:24
@[Ling_C](/user/564979) ~~是我多嘴,我可能代码有点问题,不过数据量但凡再大一点你就AC不了了~~
by __Rickysun__ @ 2024-02-03 10:24:22
@[Rickysun](/user/824205) 追求优化时间复杂度的话建议堆排序
by Ling_C @ 2024-02-03 12:30:19
@[Rickysun](/user/824205) 但这种 普及- 根本没必要
by Ling_C @ 2024-02-03 12:30:54
~~一看就是水题~~sort直接切了
by wyxrl @ 2024-02-20 00:13:11