我怎样才能清楚地猜猜游戏?

尼古拉斯·福尔根

我怎么能那样做?我对此有疑问

输入模式:A 输入最小可能的整数:1 输入最大可能的整数:10 我生成了一个 1 到 10 之间的随机整数。试着猜一猜:5 不。它更小!尝试猜测: 3 完成。


输入模式: B 输入最小可能的整数: 1 输入最大可能的整数: 10 生成一个 1 到 10 之间的随机整数......我应该使用哪种方法来猜测它?1:二进制搜索 2:插值搜索 输入您选择的方法: 1 是 5 吗?(<, >, =) <

是3吗?

完毕。

乔治·德皮

学习不同的搜索算法非常有趣。
既然你说需要学习,那我给你介绍一下这两种算法的理论解释。

二分查找

这是一种计算机科学搜索算法,可在已排序的数组中查找目标值的位置。二分搜索将目标值与数组的中间元素进行比较。如果它们不相等,则消除目标不能位于其中的一半,并继续搜索剩余的一半,再次取中间元素与目标值进行比较,并重复此操作直到找到目标值。如果搜索以剩余的一半为空结束,则目标不在数组中。

插值搜索

插值搜索不是计算中点,而是估计目标值的位置,同时考虑数组中的最低和最高元素以及数组的长度。这仅在数组元素是数字时才有可能。它的工作原理是在许多情况下中点不是最佳猜测。例如,如果目标值靠近数组中的最高元素,则它很可能位于数组末尾附近。
为了找到要搜索的位置,它使用以下公式。

pos = lo + [(x-arr [lo]) * (hi-lo) / (arr [hi] -arr [Lo])]

arr[] -> 需要搜索元素的数组
x -> 要搜索的元素
lo -> arr[] 中的起始索引
hi -> arr[] 中的结束索引

维基百科二进制搜索

您希望如何实施它们由您自己决定。
如果您对此感到困惑并发布您的尝试代码,我们可以为您提供更多帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章