sort函数没有比较的情况下默认从小到大排列
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i;
int a[]={3,4,2,5};
sort(a,a+4);
for(i=0;i<4;i++)
printf("%d ",a[i]);
return 0;
}
输出结果是2 3 4 5
sort函数还可以根据自己的需要定义排列顺序
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int i;
int a[]={3,4,2,5};
sort(a,a+4,cmp);
for(i=0;i<4;i++)
printf("%d ",a[i]);
return 0;
}
输出结果是5 4 3 2
用bool定义一个函数cmp让数组元素从大到小排列
sort函数在我看来用的最爽的地方就是用在结构体排序中
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
struct acm
{
int x,y;
}p[100];
bool cmp(acm a,acm b)
{
if(a.x<b.x)
{
return true;
}
else
if(a.x==b.x)
{
if(a.y<b.y)
{
return true;
}
}
return false;
}
int main()
{
int i;
p[0]={1,7};
p[1]={2,3};
p[2]={2,1};
p[3]={1,6};
sort(p,p+4,cmp);
for(i=0;i<4;i++)
printf("%d %d\n",p[i]);
return 0;
}
acm是定义的结构体 类似与一个数据类型,所以当bool函数引用结构体的时候传递的参数是acm a,acm b.传递到函数里后结构体的形参就变成了a,b所以线比较a.x b.x的大小
此时比较的应该是相邻两个结构体第一个数的大小如果第一个数大小相等再比较第二个数的大小。
结构体定义时可以直接在末尾定义一个数组 这样之后使用的时候可以直接对数组进行赋值。