二分算法
二分查找
假设表元素是按升序排列
将 查找范围的中间元素的值 midmidmid 和 目标元素 xxx 作比较,利用中间位置将表分成前后两个子表
1. 如果 查找范围的中间值==目标元素,则查找成功
2. 如果 目标元素<查找范围中间值,范围缩小到前一子表
3. 如果 目标元素>查找范围中间值,则查找范围缩小到后一子表
重复以上过程,直到目标元素,则查找成功 或或或 直到子表不存在为止,则查找失败
二分查找时间复杂度:O(log2n)O(log_2n)O(log2 n)
第一个大于等于指定值的元素 lower_bound(a+1,a+n+1,x)-a 得到的是下标(如无大于等于对应元素的值,输出最大下标n+1)
第一个大于指定值的元素 upper_bound(a+1,a+n+1,x)-a 得到的是下标(如无大于对应元素的值,输出最大下标+1->n+1)
二分答案
二分答案与二分查找类似,二分查找有一个前提就是数列是有序的,二分答案要求满足条件的答案是单调有序的,它的基本思路是当前答案是否满足题目的要求,根据检查结果更新查找区间,最终取得最符合题目要求的答案进行输出
前缀和
差分
撤硕管理员