跟踪和二进制搜索

时间:2018-02-20 16:50:29

标签: java algorithm data-structures binary-search

目前在我的计算机科学的第二年,我们刚刚开始我们的数据结构和算法类。

我们的一个教程包含一个关于在二进制搜索中进行跟踪的问题,我们应该在应用于字符串数组时跟踪变量x和y。

我附上了以下问题的图片:

enter image description here

我能够正确填写线,目标,x,y和m值,但是,不了解如何确定comp值。

示例解决方案如下图所示,为" George"。

enter image description here

如果有人能解释如何计算comp值,我将非常感激。

由于

1 个答案:

答案 0 :(得分:0)

以电话簿为例。在电话簿中,名称按字母顺序列出。二进制搜索的作用是直接进入电话簿的中间页面并查看值是否存在,如果您想要的值是"小于"电话簿中的值,(按字母顺序)您转到电话簿的右半部分,然后查看该侧的中间页面。如果您想要的值是"大于"电话簿中的值,您转到电话簿的左半部分,然后查看该侧的中间页面。然后,当您想要的值最终等于页面上的值时,您将返回页码。

在示例代码中,low可以由电话簿中的第一页表示。高可以由电话簿的最后一页表示。你想找到价值"目标"和一个名为&#34的String []数组; a"给出。该阵列可以由电话簿本身表示。你想要做的是比较你的目标"使用上面列出的二进制搜索算法的字符串,找到" target"的索引。 string匹配数组中的字符串。在这种情况下,String.compareTo(anotherString)方法是必需的,因为该方法接受String并将其与anotherString进行比较,返回一个数字。如果该数字为负数,则字符串中的字符串早于anotherString。如果该数字为正数,则字符串后面的字母表比anotherString。如果该数字相等,则两个字符串完全相同,因此返回零。

希望这有帮助!