【问题标题】:Tracing and Binary Search追踪和二分搜索
【发布时间】:2018-02-21 01:05:30
【问题描述】:

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

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

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

我能够正确填写 line、target、x、y 和 m 值,但是不明白 comp 值是如何确定的。

下图显示了“George”的示例解决方案。

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

谢谢

【问题讨论】:

标签: java algorithm data-structures binary-search


【解决方案1】:

以电话簿为例。在电话簿中,姓名按字母顺序列出。二进制搜索的作用是直接进入电话簿的中间页面,看看是否有值,如果你想要的值“小于”电话簿中的值,(按字母顺序)你去到电话簿的右半边,看看那一边的中间页。如果你想要的值“大于”电话簿中的值,你就到电话簿的左半边,看那一边的中间页。然后,当你想要的值最终等于页面上的值时,你返回页码。

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2019-01-09
    相关资源
    最近更新 更多