我们首先介绍sort函数基本用法,再引入正文:结构体排序函数
1. sort头文件
使用sort函数需引入头文件 #include<algorithm>
2. sort函数
sort函数有三个参数:
(1)第一个是要排序的数组的起始地址
(2)第二个是结束地址(最后一位要排序的地址)
(3)第三个参数是排序的方法,默认从小到大排序函数原型:sort(起始地址, 末尾地址, cmp)
下面是sort函数基本用法例子~:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[10] = {7, 6, 12, 8, 5, 15, 17, 4, 1, 0};
for(int i = 0; i < 10; i ++)
cout << a[i] << " ";
sort(a, a + 10);//默认从小到大排序
cout << endl;
for(int i = 0; i < 10; i ++)
cout << a[i] << " ";
return 0;
}
运行结果如下:
下面是我愿称之为:升序降序快速写法~
sort(a, a + n, greater<int>());//降序排列
sort(a, a + n, less<int>());//升序排列
3. 结构体sort函数(简短正文)
先上代码:这是天梯L1-056猜数字 本人想出来的用结构体的写法
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
struct num//定义结构体
{
char name[10];//姓名
int num;//所猜数字
double cha;//与平均值一半的差值
};
bool cmp(num a, num b){//cmp函数
return a.cha < b.cha;
}
int main()
{
struct num a[10010];
int n;
double sum = 0;
cin >> n;
for(int i = 0; i < n; i ++)//输入
{
cin >> a[i].name;
cin >> a[i].num;
sum += a[i].num;
}
sum /= n*2;
for(int i = 0; i < n; i ++)//求每个的差值
{
a[i].cha = fabs(a[i].num - sum);
}
sort(a, a + n, cmp);//排序
cout << (int) sum <<' '<< a[0].name;
return 0;
}
其中就涉及结构体sort排序
/*bool cmp(结构体名 a, 结构体名 b){
return a.某属性 > b.某属性;
}
*/
bool cmp(struct num a, struct num b)
{
return a.num > b.num;
}
比较时应该就是传入结构体数组的地址
顺便提一下结构体数组创建
//struct 结构体名 数组名[数组大小]
struct num a[10010];