Some Notes

Be hard-working every day.

二分

二分的意义

优化。顾名思义,将一整个有序的数列分成两个部分,不断缩小边界,查找某个数字。
二分的时间复杂度为

此时,我们学的还是整数二分以及浮点二分。

整数二分的两个模板

二分的前提是这个序列是有序的,也就是单调递增的。
一般来说,二分会取中间值进行初始化,再判断这个中间值是否大于目标值。若是,则缩减左边界,否则缩减右边界。直至逼近答案。
说“逼近”,是因为有时查找的元素不存在于序列中,那所二分出的答案是接近于的,但又是不正确的。所以要加上一个特判。除非说明给出的想查询的元素所有都是存在于序列中的。

指针

指针的作用

指针,顾名思义,就是指向某一东西的标志。

一些有用的东西又没有用的东西

过时观点警告

这些东西以前对我大概没用,但是现在我认为还是很有必要学习的。
所以说我为什么要更新这个。

宏定义和类型定义

宏定义将一个指令导向另一个指令

时间复杂度和空间复杂度

时间复杂度

时间复杂度,就是电脑运行一段程序所需要的时间

另外,电脑每秒可以运行 次。( 代表 ,即 )

时间复杂度记作

前缀和

开始

前缀和是一种优化算法,用于求区间和。若数据范围特别大,写 for 循环很可能会爆时间复杂度,就可以用上前缀和了。前缀和有一维前缀和二维前缀和,我暂时还没有学二位前缀和,故在此不多赘述。

使用

一维前缀和需要把一个数组比如数组 数组长度)储存到另一个数组中比如 数组 。那么: