如果找不到搜索到的值,二进制搜索如何工作?

时间:2014-03-13 09:31:05

标签: binary-search

如果找不到搜索到的值,二进制搜索如何工作?

例如,如果您要在此数组中搜索60:

ANDMarks = {1, 6, 38, 39, 45, 55, 57, 61, 72, 73, 88, 96}

它是如何结束的?我已经干了代码,直到搜索到索引6和7.为了让我更容易得到我所要求的,这是我的干运行:

步骤:

1.找到中间值。

Middle value = (index of 1st element + index of last element)/2
Middle value = (0+11)/2
Middle value = 5 
Middle value = element in 5th index => 55

Indexes     0   1   2   3   4   **5**   6   7   8   9   10  11
Elements    1   6   38  39  45  **55**  57  61  72  73  88  96

步骤2.中间值(55)!= 60

步骤3.中间值&lt;搜索有价值(55 <60)

考虑数组中位于中间值

之后的部分
Indexes     6   7   8   9   10  11
Elements    57  61  72  73  88  96

第4步。

Middle value = (index of 1st element + index of last element)/2
Middle value = (6+11)/2
Middle value = 8
Middle value = element in 8th index => 72

Indexes     6   7   **8**   9   10  11
Elements    57  61  **72**  73  88  96

步骤5.中间值(72)!= 60

步骤6.中间值&gt;搜索值(72> 60)

考虑数组中位于中间值之前的部分。

Indexes     6   7
Elements    57  61

现在会发生什么?

3 个答案:

答案 0 :(得分:0)

第7步。

Middle value = (index of 1st element + index of last element)/2
Middle value = (6+7)/2
Middle value = 6
Middle value = element in 8th index => 57

Indexes     **6**   7
Elements    **57**  61

步骤8.中间值(57)!= 60

步骤9.中间值&lt;搜索值(57 <60)

考虑数组中位于中间值之后的部分。

Indexes     7
Elements    61

步骤10.

Middle value = (index of 1st element + index of last element)/2
Middle value = (7+7)/2
Middle value = 7
Middle value = element in 8th index => 61

步骤11.中间值!= 60

步骤12.找不到值,执行结束。

答案 1 :(得分:0)

jmeter -Jjmeter.save.saveservice.output_format=xml -Jjmeter.save.saveservice.response_data.on_error=true ....

答案 2 :(得分:0)

我知道我来晚了一点,也许您现在已经知道了,但是,这个问题有超过5,000个观点,没有明确的解释。

可能是我的解释可以帮助任何有抱负的计算机科学爱好者。

Here is my explanation目前,我在堆栈溢出方面没有足够的声誉,因此它不允许我嵌入图像。请随意查看说明,因为其中包含图片。

如果有人喜欢或同意,请随时竖起大拇指,因为这会鼓励我在Stack Overflow上留下更多反馈和帖子。

下面是我的JavaScript代码,您可以在Chrome Developer工具中复制粘贴,对其进行调试,然后查看其工作原理。

mongoexport --db=testdb --collection=testcoll --query="{ \"number\": { \"$regex\": \"^(?!0)\" } }" --out=testoutput.json

快乐编码!