第一章 基础算法(一)笔记

上课内容

排序算法

  1. 快速排序
  2. 归并排序

二分

  1. 整数二分
  2. 浮点二分

上课模式

  1. 课上吸收算法思想
  2. 课下熟练掌握模板,刷题,模板和题要写3-5次

排序算法

快排

  1. 取分界标准,可以是数组最左边或最右边或中间的元素
  2. 调整区间(关键)
  3. 递归左右区间

如何调整区间?

  1. 额外的数组
  2. 两个指针,不断交换值

归并排序

  1. 分界,对半分
  2. 递归左右区间
  3. 归并(关键)

如何归并?

双指针 + 额外数组

二分

整数二分

本质:找边界

选取一个条件,使得区间左边的点都不满足这个条件,右边的点都满足这个条件,二分便是用来寻找这点的(可能有两个边界点,对应了两种模板)

两种情况

  1. check 为 true时, l = mid , 则为false时,r = mid + 1, mid = l + r + 1 >> 1
  2. check 为true时, r = mid , 则为false时, l = mid - 1, mid = l + r >> 1

步骤

  1. 确定check函数
  2. 想性质,确定谁为mid(确定是哪种情况),画图
  3. 敲模板

ps 二分一定有解,但可能这个解不满足题意,此时说明原问题无解

浮点二分

能严格对半分,不用分类

结束标准:例如r - l < 10e6

比题干要求的精度再精确100倍即可

posted @ 2021-11-21 16:30  tsrigo  阅读(40)  评论(0编辑  收藏  举报