在利用二分法时,有的人常常会写成
int mid = ( left + right) / 2;但是这个是不严谨的,在left+right > INT_MAX时会出现错误。
因此推荐使用
int mid = left + ( right - left) / 2;示例如下:
#include<iostream>
using namespace std;
int main()
{
int a = 1, b = INT_MAX;
int mid1 = (a + b) / 2;
int mid2 = a + (b - a) / 2;
cout << "mid1 = "<< mid1 << endl;
cout << "mid2 = "<< mid2 << endl;
return 0;
}结果
版权声明:本文为zhaohengchuan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。