二进制搜索和重复

时间:2015-01-15 20:27:43

标签: search theory binary-search

让我们说一个数组{-2,8,13,22,25,25,38,42,51,103}

当二进制搜索第一次将其拆分为2时,将被视为中间值?

我自己的猜测是名为25的第二个值,因为只有这样,搜索才知道它是相同的。

2 个答案:

答案 0 :(得分:1)

我相信它总是试图找到中间的

(0+n)/2 = (0+9)/2 = 4(Integer)

在你的情况下。

因此,如果您想要搜索25本身,根据您将在下限组中找到的算法,首先将位置4作为匹配。

答案 1 :(得分:1)

中间值是前25位数。

你的binarySearch第一次调用是这样的:binarySearch(a,1,a.length),其中“a”是你的数组。

你的数组长度是10,所以m =((10-1)+1)/ 2 =数组中的5个位置。

然后调用binarySearch(1,m)并将相同的方法应用于此数组(原始数据的前半部分) -2,8,13,22,25