无法理解指数搜索的工作原理

时间:2017-09-02 12:39:05

标签: arrays algorithm search exponential

我目前正在学习考试和学习搜索算法。我理解线性,二进制和插值搜索,现在尝试理解指数搜索。但是互联网上有不好的消息来源,如果有解释对我来说非常复杂..我希望你能澄清算法?

编辑(试图纠正我的错误):

所以,让我们说我们有数组,我们在数组中搜索19

Index i  0  1   2   3    4    5    6
         2  7  13  19   55   92   99

我们首先尝试找到范围(在我们划分数组的位置)

2^0 : i=1: A[1] > 19
2^1 : i=2: A[2] > 19
2^2 : i=4: A[4] < 19

现在我们知道我们需要从索引i=0搜索到i=3

现在我们使用二进制搜索来查找元素19

我们目前的子阵列是

Index i  0  1   2   3   
         2  7  13  19   

二进制搜索我们在中间划分,所以我们有数组

13 19

现在在中间再次分裂。 19大于1319现在只是数组中的元素。我们完成了,我们找到19

现在是否正确?

2 个答案:

答案 0 :(得分:2)

在搜索的指数阶段,步骤应该增加

你必须检查数组的第一个元素,然后是第2个,然后是第4个,然后是第8个,然后是第16个,依此类推,直到被检查的元素(具有数字2^k)变得大于(或等于)要搜索的值

此时您知道搜索的值在2^(k-1)..2^k范围内,并在此范围内开始二进制搜索

请注意,指数阶段允许快速查找包含搜索值的范围。

P.S。对于从零开始的数组计算,检查第0个索引是方便的,然后启动索引序列1,2,4,8,16 ......

答案 1 :(得分:0)

指数搜索是一种算法,用于搜索大小未知的无限数组或数组。它有两个步骤:

1)搜索大于或等于该值的第一个元素的位置 2)从开头到找到的结尾进行二进制搜索

第一步允许您定义二进制搜索的范围。并且由于指数增长因子,它被称为指数搜索。