学习笔记N-036
二分
- 更新
- 内容块
- 10
- 阅读
- 约 1 分钟
- 路径
- 学习笔记 / C++ / C++算法
最简实现
int low = 1;
int high = 101;
while (low <= high){
int middel = (low + high)/2;
if(dansui(middle)){ //蛋碎说是
high = middle - 1;
}else{
low = middle + 1;
}
}
low1.在有序数组中查找是否存在目标
2.在有序数组中寻找第一个大于等于目标的下标
3.最多将数组分为M组,每组之和不超过X,求X的最小值
(特殊)连续实数写法
const double eps = 1e-6;
double lo = -3, hi = 3;
while (lo + eps < hi) {
double mid = (lo + hi) / 2;
if (match(mid)) {
hi = mid;
} else {
lo = mid;
}
}