如何在跳转搜索中找到跳跃块大小的最佳值?

时间:2017-07-27 14:59:32

标签: algorithm

((n/m) + m-1)时,函数m = √n的值最小。因此,最佳步长为m = √n。 这里,n是数组的大小,m是要跳转的块大小。

我理解n/m是我们针对最坏情况所做的跳转,m-1是我们找到间隔(arr[km] < x < arr[(k+1)m])后线性搜索所需的时间。

但我不明白如何找到m=√n。我正在尝试如下。

(n/m)+m-1=0;
(n/m)+m=1;
n+m^2=m;
n=m-m^2.

但是这怎么会变成m = m=√n

1 个答案:

答案 0 :(得分:2)

我假设你想找到任何n的最低要求。

(n/m)+m-1

最小值是渐变为0的位置。

因此,将表达式与m

区分开来
d/dm (n/m)+m-1 = 1-n/m^2

解决1-n/m^2 = 0会给你m = sqrt(n)