📅  最后修改于: 2023-12-03 15:36:37.919000             🧑  作者: Mango
二分搜索是一种高效的搜索算法,被广泛应用于各类算法问题之中。本文将介绍如何用二分搜索实现一个猜数游戏。
二分搜索算法可以将一个有序数组的搜索时间复杂度优化到O(log n)。我们可以应用这个思想,在每次猜数时使用二分法来缩小搜索区间。
以下是实现过程:
下面是完整的Python代码:
import random
ans = random.randint(1, 100)
l, r = 1, 100
cnt = 0
while True:
num = int(input("请猜一个数字(1-100):"))
cnt += 1
if num == ans:
print("恭喜你,猜对了!你一共猜了%d次" % cnt)
break
elif num < ans:
l = num + 1
print("猜小了,再试试[%d, %d]中的数字" % (l, r))
else:
r = num - 1
print("猜大了,再试试[%d, %d]中的数字" % (l, r))
在这个程序中,我们通过random.randint()函数生成一个1到100的随机数字。在循环中,每一次询问玩家输入一个数字,如果这个数字等于答案,就输出猜测次数,并结束循环。否则,我们就通过修改搜索区间的方式,缩小答案在其中可能出现的范围,并继续询问玩家猜数,直到猜中为止。
二分搜索是一种非常高效的搜索算法,对于搜索具有单调性的问题尤其有效。通过实现一个简单的猜数游戏,我们可以加深对二分搜索算法的理解。