我该怎么做某人? 我对此有疑问
进入模式:A 输入最小可能的整数:1 输入最大可能的整数:10 我生成了1到10之间的随机整数。 尝试猜测:5 不,它较小! 尝试猜测:3 完成。
进入模式:B 输入最小可能的整数:1 输入最大可能的整数:10 产生介于1到10之间的随机整数... 我应该使用哪种方法进行猜测? 1:二进制搜索 2:插补搜索 输入您选择的方法:1 是5吗? (<,>,=) << / p>
完成。
答案 0 :(得分:0)
学习不同的搜索算法非常有趣。
由于您说您需要学习,因此我向您介绍了这两种算法的理论解释。
这是一种计算机科学搜索算法,用于查找目标值在排序数组中的位置。二进制搜索将目标值与数组的中间元素进行比较。如果它们不相等,则消除目标不能位于其中的那一半,并在剩余的一半上继续搜索,再次将中间元素与目标值进行比较,并重复此过程直到找到目标值。如果搜索结束时剩下的一半为空,则目标不在数组中。
插值搜索会考虑数组中的最低和最高元素以及数组的长度,而不是计算中点,而是估算目标值的位置。仅当数组元素为数字时才有可能。它的工作原理是,在许多情况下中点不是最佳猜测。例如,如果目标值接近数组中的最高元素,则它很可能位于数组末尾附近。
要查找要搜索的位置,它使用以下公式。
pos = lo + [(x-arr [lo])*(hi-lo)/(arr [hi] -arr [Lo])]
arr []->需要搜索元素的数组
x->要搜索的元素
lo-> arr []中的起始索引 嗨-> arr []的结尾索引
您希望如何实现它们取决于您自己。
如果您坚持这样做,并发布尝试代码,我们可以为您提供更多帮助。