sort()函数:对数组进行排序
sort函数的使用需要加上头文件algorithm和using namespace std;
格式:
Sort(a(首元素地址),a+n(尾元素的下一个地址),cmp(比较函数));
其中sort函数的第三个参数如果不写的话,则会默认数组元素从小到大排序.
(1)从大到小排序
#include<stdio.h>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
} //从大到小排序
int main()
{
int n,i,a[1000];
printf("输入元素个数\n");
scanf("%d",&n);
printf("输入元素\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]);
printf("\n");
return 0;
}
(2)含有结构体的从大到小排序
#include<stdio.h>
#include<algorithm>
using namespace std;
struct stu
{
int x;
int y;
}a[10000];//创建一个结构体用来存储x和y的值
bool cmp(stu a,stu b)
{
return a.x>b.x;
} //根据x的值从大到小排序
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
sort(a,a+n,cmp);
for(i=0;i<n;i++)
printf("%d %d\n",a[i].x,a[i].y);
return 0;
}
(3)不含第三个参数的默认排序
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int a[100],n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);//不写第三个参数,则默认从小到大排序
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}