我如何清楚地猜猜游戏?

时间:2019-03-07 12:53:20

标签: java

我该怎么做某人? 我对此有疑问

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


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

是3吗?

完成。

1 个答案:

答案 0 :(得分:0)

学习不同的搜索算法非常有趣。
由于您说您需要学习,因此我向您介绍了这两种算法的理论解释。

二进制搜索

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

插值搜索

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

  

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

     

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

来源Wikipedia Binary Search

您希望如何实现它们取决于您自己。
如果您坚持这样做,并发布尝试代码,我们可以为您提供更多帮助。