【发布时间】:2015-01-15 20:27:43
【问题描述】:
假设我们是一个数组 {–2, 8, 13, 22, 25, 25, 38, 42, 51, 103}
当二分搜索第一次将其一分为二时,中间值会被认为是什么?
我自己的猜测是名为 25 的第二个值,因为只有这样搜索才知道它是相同的。
【问题讨论】:
标签: search theory binary-search
假设我们是一个数组 {–2, 8, 13, 22, 25, 25, 38, 42, 51, 103}
当二分搜索第一次将其一分为二时,中间值会被认为是什么?
我自己的猜测是名为 25 的第二个值,因为只有这样搜索才知道它是相同的。
【问题讨论】:
标签: search theory binary-search
我相信它总是试图通过
找到中间(0+n)/2 = (0+9)/2 = 4(Integer)
在你的情况下。
因此,如果您想搜索 25 本身,根据您将在下限组中找到的算法,首先将位置 4 作为匹配项。
【讨论】:
中间值是前 25 个数字。
您的 binarySearch 第一次调用类似于: binarySearch(a,1,a.length) ,其中“a”是您的数组。
您的数组长度为 10 ,因此 m = ((10-1) +1)/2 = 5 在数组中的位置。
然后调用 binarySearch(1,m) 并对这个数组应用相同的方法(原始数组的前半部分) –2、8、13、22、25
【讨论】: