首页 > 解决方案 > 我怎样才能让它清楚地猜谜游戏?

问题描述

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

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


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

是3吗?

完毕。

标签: java

解决方案


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

二进制搜索

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

插值搜索

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

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

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

来源维基百科二进制搜索

您希望如何实施它们由您自行决定。
如果您坚持这一点并发布您尝试的代码,我们可以为您提供更多帮助。


推荐阅读