《王道机试》学习笔记
1、排序
在c++中,推荐使用sort方法,进行快排
sort升序,如果想用降序可以重写布尔方法,调用时sort(a,a+n,compare)
bool compare(int a,int b){
if(a>b)return true;
else return false;
}
对于结构体的复杂排序,也可以使用自定义的布尔方法。首先按成绩由低到高,成绩相同时按照年龄从低到高
bool compare(student a,student b){
if(a.grade!=b.grade)return a.grade<b.grade;
if(a.age!=b.age)return a.age<b.age;
return true;
}
可以自定义外部判断函数sort(a,a+n,compare),也可以在结构体中自定义即可sort(a,a+n)调用
bool operator <(const student &a)const{
return a.grade<b.grade;
}
sort在使用时非常方便快速,但是我们也需要掌握其他排序的实现和优缺点,以便在实际使用中能够快速的选择合适的算法
2、日期(p21)
求两个日期的时间差,可以将每个日期统一到与原点时间的时间差(0000年1月1日),这样每个输入都可以直接预处理,等到判断的时候直接调用减法O(1)即可