sort函数的使用
此篇当作自己的笔记(水平太菜,这都一直没搞明白)
sort()函数的用法
1)sort函数包含在头文件<algroithm>中,还要结合using namespace std
2)sort有三个参数
第一个是待排数组的起始地址
第二个是结束的地址(最后一个要排序的地址的下一地址
第三个是排序的方式,可以是从小到大,也可以是从大到小,还可以不写,此时默认是从小到大
如果要实现从大到小,先写好cmp函数
bool cmp(int a,int b)
{
return a > b;
}
3)实例一:
int a[10]= {1,5,2,3,4,4,1,8,2,10}
从小到大:sort(a,a + 10);
从大到小:sort(a,a+10,cmp);这里的cmp函数不需要传入参数
1)sort函数包含在头文件<algroithm>中,还要结合using namespace std
2)sort有三个参数
第一个是待排数组的起始地址
第二个是结束的地址(最后一个要排序的地址的下一地址
第三个是排序的方式,可以是从小到大,也可以是从大到小,还可以不写,此时默认是从小到大
如果要实现从大到小,先写好cmp函数
bool cmp(int a,int b)
{
return a > b;
}
3)实例一:
int a[10]= {1,5,2,3,4,4,1,8,2,10}
从小到大:sort(a,a + 10);
从大到小:sort(a,a+10,cmp);这里的cmp函数不需要传入参数
4)实例二:
假设定义了一个结构体,如下:
struct node{
int a;
int b;
double c;
}
有一个node类型的数组node arr[100],想对它进行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b还相同,就按c降序排列。
就可以这样写cmp函数:
bool cmp(node x, node y)
{
if (x.a != y.a) return x.a < y.a;
if (x.b != y.b) return x.b > y.b;
else return x.c > y.c;
}
{
if (x.a != y.a) return x.a < y.a;
if (x.b != y.b) return x.b > y.b;
else return x.c > y.c;
}
参考链接:https://baike.baidu.com/item/sort函数/11042699?fr=aladdin(百度是个好东西,虽然日常吐槽
个性签名:时间会解决一切