7 Nov 2016 本文阅读量

【Study】 二分的正确写法

二分的正确写法

整数二分

int l = 0, r = n;
while (l <= r) {
	int nMid = (l + r) >> 1;
	if (Judge(x, y, nMid)) {
		l = nMid + 1;
	}
	else {
		r = nMid - 1;
	}
}

//注意当l为0时, 输出0, 而非-1
cout << l - 1 << endl;

实数二分

double l = 0, r = n;
//精度具体看题意
while (r - l > 0.0001) {
	double nMid = (l + r) / 2.0;
	if (Judge(x, y, nMid)) {
		l = nMid;
	}
	else {
		r = nMid;
	}
}

cout << l << endl;

Tags:
Status:

Share:

Comments: