排序
题目描述
将读入的 N个数从小到大排序后输出。
输入格式
第 1 行为一个正整数 N,第 2行包含 N 个空格隔开的正整数 ai ,为你需要进行排序的数,数据保证了 Ai 不超过 10^9。
输出格式
将给定的 $N$ 个数从小到大输出,数之间空格隔开,行没换行且无空格。
鲜例
样例输入
```
5
4 2 4 5 1
```
样例输出
```
1 2 4 4 5
```
提示
对于 20% 的数据,有 N <= 10^3;
对于 100% 的数据,有 N<= 10^5。
代码示例
#include<iostream>
using namespace std;
const int N = 1e5 + 7;
int a[N], t[N];
void merge_sort(int l,int r)
{
int mid = (l + r) / 2;
int pl = l;
int pr = mid + 1;
int m = 0;
if (l == r)return;
merge_sort(l, mid);// 递归,分为每个数为一部分,左部分
merge_sort( mid+1,r);//递归,分为每个数为一部分,右部分
while (pl <= mid && pr <= r)
{
if (a[pl] < a[pr])t[m++] = a[pl++];
else t[m++] = a[pr++];
}// 排序
while (pl <= mid)t[m++] = a[pl++];//左部分剩余
while (pr <= r)t[m++] = a[pr++];//右部分剩余
for (int i = 0;i <m;i++)
a[i+l] = t[i];//复制到原数组中
return;
}//合并
int main()
{
int n;
cin >> n;
for (int i = 1;i <= n;i++)
cin >> a[i];
merge_sort(1, n);
for (int i = 1;i <= n;i++)
cout << a[i] << " ";
return 0;
}