首先是int类型排序
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y)
{
return x<y; //从小到达排序,
// return x>y; //若改为x>y则为降序排
}
int main()
{
int n,i;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n,cmp);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
}
这里用到的是万能头,也可以使用#include<algorithm>
sort()里面首先要填排序的数组及地址,然后是长度,最后是一个函数(若不写则默认为升序排列)。
下面的是结构体的排序:
#include<bits/stdc++.h>
using namespace std;
typedef struct data{
string a;
int score;
string id;
}N;
bool cmp1(data x,data y)
{
return x.score<y.score;
}
bool cmp2(data x,data y)
{
return x.id<y.id;
}
int main()
{
int n,i;
cin>>n;
N str[n];
for(i=0;i<n;i++)
{
cin>>str[i].a>>str[i].score>>str[i].id;
}
cout<<endl;
sort(str,str+n,cmp1);
for(i=0;i<n;i++)
cout<<str[i].a<<" "<<str[i].score<<" "<<str[i].id<<endl;
cout<<endl;
sort(str,str+n,cmp2);
for(i=0;i<n;i++)
cout<<str[i].a<<" "<<str[i].score<<" "<<str[i].id<<endl;
}
这里是对结构体的数字和ID(字符串)进行的排序
需要用c++中的string来定义字符串,如果用字符数组则无法对其进行比较。
|