我学习了我的考试和学习搜索算法。我了解线性,二进制和内插搜索,现在尝试了解指数搜索。但是互联网上有不好的来源,如果有解释对我来说很复杂..我希望你能澄清算法?理解指数搜索的工作原理
编辑(tryd改正我的错误):
所以我们可以说,我们有数组,我们在数组中搜索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
大于13
而19
现在只是数组中的元素。我们完成了,我们找到19
现在是否正确?
因此,我正确地做了第一步(找到范围),对不对?当找到范围时,我会像你说的那样使用二进制搜索(这意味着我将子阵列分成中间等等......对吧?)。 – roblind
不,你做了同样的步骤(增加我) - 2,2,2,但指数搜索需要1,2,4,8 ... – MBo
Tyvm我尝试纠正它? – roblind