复杂度O(logn)求解比较理想
bool isSquare(int number, int &sn)
{
int left = 1, right = number;
while(left <= right) {
int mid = (right - left) / 2 + left;
if(mid * mid == number) {
sn = mid;
return true;
}
else if(mid * mid < number) {
left = mid + 1;
} else
right = mid - 1;
}
return false;
}
![](http://hi.csdn.net/attachment/201110/21/0_1319161420wEkG.gif)