思路一:
遍历1到n,将每个数的平方与n比较,若小于,则递增,若等于则返回,若大于,则失败
思路二:
二分查找1到n中某个数的平方为n,时间复杂度为logn.
#include<stdio.h>
int findValue(int start, int end, int n)
{
if(end < 1 || n < 1)
{
return -1;
}
if(start > end)
{
return -1;
}
int middle = (start + end)>>1;
if(middle * middle == n)
{
return middle;
}else if( middle * middle < n )
{
return findValue(middle + 1, end, n);
}else if( middle * middle > n )
{
return findValue(start, middle - 1, n);
}
}
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
int result = findValue(1, n, n);
printf("%d\n", result);
}
return 0;
}
本文介绍了一种高效的方法来查找一个整数的平方根,包括两种思路:一种是线性搜索,另一种则是使用二分查找算法,显著提高了查找效率。
792

被折叠的 条评论
为什么被折叠?



