#include<bits/stdc++.h>
using namespace std;
const int N = 5e5+3; //const定义一个1常量,不能被修改
int a[N];
bool cmp(int u,int v) //当sort函数的第三个参数是一个布尔类型的函数时候,
{ //会根据返回值来判断第一个元素是否应该在第二个元素之前
return u>v; //而不是是否进行排序
} // 这一部分的逻辑就是当前一个数字大于后一个数字的时候,返回1
//sort函数将前一个数字排在后一个数字之前
int main()
{
int n;cin>>n;
for(int i=1;i<=n;i++) cin>>a[i]; //这里对下标从1到n的元素进行了排序
//因为写入的时候也是从1到n开始写入的,
//a[0]没有写入
sort(a+1,a+1+n); //sort排序是一个左闭右开的区间。
for(int i=1;i<=n;i++) cout<<a[i]<<" \n"[i==n]; // 最后一个部分包含了一个空格和一个换行符。,
sort(a+1,a+n+1,cmp); // 当i==n,打印换行符号,否则打印空格。
for(int i=1;i<=n;i++) cout <<a[i]<<" \n"[i==n];
return 0;
}
修改了一下排序的范围,影响了两处地方
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+3;
int a[N];
bool cmp(int u,int v)
{
return u>v; //如果改为u<v 的话,结果还是升序排列,与默认没有区别
}
int main()
{
int n;cin>>n;
int i;
for(i=0;i<n;i++) //数组写入更改
{
cin>>a[i];
}
sort(a,a+n); //排序对应的也要都-1;
for(i=0;i<n;i++)
{
cout<<a[i]<<" \n"[i==n-1]; //这里更改了数组写入所以i无法达到n
}
sort(a,a+n,cmp);
for(i=0;i<n;i++)
{
cout<<a[i]<<" \n"[i==n-1];
}
return 0 ;
}
138

被折叠的 条评论
为什么被折叠?



