题解:
法一:(数组本身不降序,倒序输出)
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 3;//5e5即5*10^5,+3是保险,避免超出
int a[N];
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
cin >> n;
for(int i = 1; i <= n; i++)cin >> a[i];
sort(a + 1, a + n + 1);//因为这里是数组而非容器,所以sort形参不能写a.begin(),a.end()
for(int i = 1; i <= n; i++)cout << a[i] << " \n"[i == n];//遍历注意是n个,而非全部
for(int i = n; i >= 1; i--)cout << a[i] << " \n"[i == 1];
//最后" \n"[i == 1] 表示当i不等于1时输出第一个字符,即空格,当等于1时输出第二个字符,即换行
return 0;
}
法二:(数组本身降序 )
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 3;
int a[N];
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
cin >> n;
for(int i = 1; i <= n; i++)cin >> a[i];
sort(a + 1, a + n + 1);
for(int i = 1; i <= n; i++)cout << a[i] << " \n"[i == n];
sort(a + 1, a + n + 1,[](const int &u, const int &v)//形参也可写成int u,int v,但要注意形参名不可与数组名相同
{
return u > v;//匿名函数大于号时为将降序输出
});
for(int i = 1; i <= n; i++)cout << a[i] << " \n"[i == n];
return 0;
}