java - 我怎样才能让它清楚地猜谜游戏?
问题描述
我怎么能那样做?我对此有疑问
输入模式: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[] 中的结束索引
您希望如何实施它们由您自行决定。
如果您坚持这一点并发布您尝试的代码,我们可以为您提供更多帮助。
推荐阅读
- javascript - 如何将背景图像的 url 导入 css 文件?
- microsoft-graph-api - 图形文件上传 API - 图像已损坏
- xcode - 用于归档 iOS 应用的位码版本无效
- r - R按列中的数字对数据进行分组
- bash - 在 shell 脚本中对文本文件进行排序
- string - 如何在 Golang 中为字符串添加单引号?
- entity-framework-core - 如何定义应该使用哪个外键导航属性?
- reactjs - 当显式定义深层链接时,ngrok 不适用于 react-router
- ruby-on-rails - has_many :through 在 Active Record 中
- sql - PostgreSQL:将 JSON 数组打印为 CSV