背景

其实再之前就有过这篇blog了,不过写得不好。之前用的是D老师的代码。现在重写一篇,为纪念七年级下册期末考前的最后一节线上课。


二分包括很多内容。粗略可以分为二分查找(二分搜索)和二分答案。


0. 区间

在学二分前,要了解一个概念——区间。区间表示一个范围。区间分为4种:

  1. 前闭后闭
  2. 前闭后开
  3. 前开后闭
  4. 前开后开

(现在学了实数二分,终于接受了前开后开区间)

0-1. 前闭后闭

前闭后闭区间可以表示为 [l,r] ,包括 l ,包括 r

用这个区间写二分比较复杂,但狡猾的出题人就喜欢这种区间————因为他们喜欢学历史 (喜欢背书)

0-1. 前闭后开

前闭后闭区间可以表示为 [l,r) ,包括 l ,不包括 r

这种区间适合求最小值最大。

0-1. 前开后闭

前闭后闭区间可以表示为 (l,r] ,不包括 l ,包括 r

这种区间适合求最大值最小。

0-1. 前开后开

前闭后闭区间可以表示为 (l,r) ,不包括 l ,不包括 r

这种区间适合求实数二分(类似1型二分)。


1. 二分查找(二分搜索)

二分查找,可以理解为二分和查找。

好像二分搜索比二分查找更高大上亿些。不过它们的意思是相同的。即在在单调不下降序列中查找xx/第一个大于/大于等于/最后一个小于/小于等于xx/的数。前面的那句话有点长,整理一下就得到查找的分类

种类 最大值最小 最小值最大
普通 查找xx
有= x≥x x≤x
无= >x>x <x<x

上面是查找的分类方式,那二分呢?当然就是按照上面的区间来分类。这里参考D老师的分类方法:

  1. 1型二分
  2. 0型二分
  3. -1型二分

结合一下,就可以得到二分查找的分类

1-1.