第一章 基础算法(一)笔记
上课内容
排序算法
- 快速排序
- 归并排序
二分
- 整数二分
- 浮点二分
上课模式
- 课上吸收算法思想
- 课下熟练掌握模板,刷题,模板和题要写3-5次
排序算法
快排
- 取分界标准,可以是数组最左边或最右边或中间的元素
- 调整区间(关键)
- 递归左右区间
如何调整区间?
- 额外的数组
- 两个指针,不断交换值
归并排序
- 分界,对半分
- 递归左右区间
- 归并(关键)
如何归并?
双指针 + 额外数组
二分
整数二分
本质:找边界
选取一个条件,使得区间左边的点都不满足这个条件,右边的点都满足这个条件,二分便是用来寻找这点的(可能有两个边界点,对应了两种模板)
两种情况
- check 为 true时, l = mid , 则为false时,r = mid + 1, mid = l + r + 1 >> 1
- check 为true时, r = mid , 则为false时, l = mid - 1, mid = l + r >> 1
步骤
- 确定check函数
- 想性质,确定谁为mid(确定是哪种情况),画图
- 敲模板
ps 二分一定有解,但可能这个解不满足题意,此时说明原问题无解
浮点二分
能严格对半分,不用分类
结束标准:例如r - l < 10e6
比题干要求的精度再精确100倍即可