头文件<algorithm>
sort函数默认可以实现顺序容器的从小到大排序,那么从大到小呢,若容器为二维容器,那么还能使用sort排序吗?
1. 默认从小到大排序
vector<int> vec;
//赋值
//
//...
sort(vec.begin(),vec.end());
2. 从大到小排序,把里面的a>b改为a<b就实现从小到大
//定义一个模板函数,也可以只定义函数,T和要排序的数组里的元素类型
template<T>
bool cmp(T a,T b)
{
//这样就可以实现从大到小排序了
return a>b;
}
int main()
{
vector<int> vec;
//赋值
//
//...
//后面加上cmp参数
sort(vec.begin(),vec.end(),cmp);
}
3. 若待排序数组为一个二维数组
int main()
{
vector<vector<int> > vec;
//赋值
//
//...
//后面加上cmp参数
sort(vec.begin(),vec.end());
}
默认按照第一维进行从小到大排序
如[[1,2],[0,3]]→sort(vec.begin(),vec.end());→[[0,3],[1,2]]
4. 按照第二维从大到小排序
//就不能使用模板了
bool cmp(vector<int> a,vector<int> b)
{
return a[1]>b[1];
}
int main()
{
vector<vector<int> > vec;
//赋值
//
//...
//后面加上cmp参数
sort(vec.begin(),vec.end(),cmp);
}
如[[1,2],[0,3]]→→[[0,3],[1,2]] 第二维从大到小(3>2)。
end