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

Algorithm 如何在跳转搜索中找到跳转块大小的最佳值?,algorithm,Algorithm,当m=√n。因此,最佳步长为m=√n。 这里,n是数组的大小,m是要跳转的块大小 我知道,n/m是我们在最坏情况下进行的跳跃,m-1是我们找到间隔后进行线性搜索的时间(arr[km]

m=√n
。因此,最佳步长为
m=√n
。 这里,
n
是数组的大小,
m
是要跳转的块大小

我知道,
n/m
是我们在最坏情况下进行的跳跃,
m-1
是我们找到间隔后进行线性搜索的时间
(arr[km]

但是我不明白我是怎么做到的=√已找到n。我试着如下

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

但是这是如何变成
m=m的呢=√n

我假设您希望找到任何
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)

n
有任何界限吗?如果
n
可以是负数且任意大,那么函数的结果就没有最小值。你能帮我理解这一行吗?->d/dm(n/m)+m-1=1-n/m^2你对微分有多了解?如果你重新排列它会更容易:
n*m^-1+m-1
,然后要区分,请做每一项:
-n*m^-2+1