更具体的,你可以设置中间值mid=(x1+x2)/2,判断f(mid)是否在阈值范围内,然后再更新x1和x2的值。直到满足阈值的要求为止。
此外,你也可以考虑使用其他优化算法来解决这个问题,比如牛顿迭代法或者线性插值法。
题目:设计一个算法,判断给定的一个数n是否是某个数的平方,不能使用开方运算。
分析:二分查找法。查找从1~n的数字中,是否存在一个数m,使得m的平方为n。首先判断mid = (1 + n) / 2的平方power与m的大小,如果power >m,那么说明在[1, mid - 1]区间继续查找,否则在[mid + 1, n]区间继续查找。
code:
def isPower(n):
low = 1
high = n
while low <high:
mid = (high + low) / 2
power = mid * mid
# 接着在1~mid-1区间查找
if power >n:
high = mid - 1
# 接着在mid+1~n区间内查找
elif power <n:
low = mid + 1
else:
return True
return False
if __name__ == "__main__":
n1 = 15
if isPower(n1):
print(str(n1) + "某个自然数的平方")
else:
print(str(n1) + "不是某个自然数的平方")
程序的运行结果:
15不是某个自然数的平方
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
一个算法应该具有以下七个重要的特征:
①有穷性(Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止;
②确切性(Definiteness):算法的每一步骤必须有确切的定义;
③输入项(Input):一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输 入是指算法本身定出了初始条件;
④输出项(Output):一个算法有一个或多个输出,以反映对输入数据加工后的结果。没 有输出的算法是毫无意义的;
⑤可行性(Effectiveness):算法中执行的任何计算步骤都是可以被分解为基本的可执行 的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性);
⑥高效性(High efficiency):执行速度快,占用资源少;
⑦健壮性(Robustness):对数据响应正确。
相关推荐:《Python基础教程》
五种常见的Python算法:
1、选择排序
2、快速排序
3、二分查找
4、广度优先搜索
5、贪婪算法