1.结构体:
其实结构体中sort排序就是多了一个自定义排序方法过程,而这个排序方法的定义需要我们用相同的结构体来设数,然后判断数即可。
#include<iostream>
#include<algorithm>
using namespace std;
struct aa
{
int t;
int m;
}a[100];
//结构体的命名
bool cmp (aa x, aa y)
{
if (x.t > y.t)
return 1;
if(x.t==y.t)
if (x.m< y.m)
return 1;//还可以直接写成return x.m<y.m;bool函数自动判断是,非
return 0;
}
//sort的排序规则(结构体用sort排序需要自己编写排序规则),我编写的规则是先根据t大到小排序,如果t相同就根据m从小到大排序;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i].t >> a[i].m;
sort(a, a + n, cmp);//比一般的sort多了一个“cmp”,即自己定义的排序规则。(不一定非要为“cmp”,写成其他字母都可以)
for (int i = 0; i < n; i++)
cout << a[i].m;
return 0;
}
2.数组中:
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
int a[10][10] = { {8,7,6,5,4,3},{1,5,9,5,6,7} };
for(int i=0;i<=1;i++)
sort(&a[i][0], &a[i][6]);//只需要加上取地址;
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 5; j++)
cout << a[i][j];
cout << endl;
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
struct aa
{
int t;
int m;
}a[100];//
bool cmp(aa x,aa y)
{
if(x.t>y.t)
retrun 1;
if(x.t==y.t)
if(x.m<y.m)
return 1;
return 0;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i].t>>a[i].m;
sort(a,a+n,cmp)
for(int i=0;i<n;i++)
cout<<a[i].m;
return 0;
}
当bool函数返还为真时就运行,除了这样写还可以直接return