sort定义在#include <algorithm>中是不稳定的排序
默认情况下
sort(a,a+n)代表从a首地址到a的尾地址按默认的从小到大排序
自定义
1)简单变量
bool compare(类型名称 a,类型名称 b){return a>b;}
bool compare(const int &odd1,const int &odd2)
{
return odd1>odd2;
}
按从大到小排序
sort(v.begin(),v.end(),compare);
2)简单结构体
struct stu
{
int num;
float grade;
};
bool compare(const stu* st1,const stu* st2)
{
return st1->grade>st2->grade;
}
按照结构体重grade值从大到小排序
sort(v.begin(),v.end(),compare);
3)多条件
struct stu
{
std::string name;
int grade;
};
//const表示引用变量不会在函数中被改变
bool compare(const stu& st1,const stu& st2)
{
if(st1.grade>st2.grade)
return 1;
else if(st1.grade==st2.grade&&st1.name<st2.name)
return 1;
else
return 0;
}
按照结构体变量中的grade值从大到小排序,如果有grade值相同,按照name值字典序小的在前
参考:http://www.cnblogs.com/Leonard-/p/6545673.html