2017-07-27 51 views
1

m = √n时,函数((n/m) + m-1)的值将最小。因此,最佳步长为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

+0

做'M'和'n'有任何界限?函数的结果没有最小值,如果'n'可以是负数且任意大。 – Tom

回答

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)

+0

你能帮我理解这条线吗?> d/dm(n/m)+ m-1 = 1-n/m^2 – javapsy

+0

你对差异化了解多少? – Tom

+0

好吧..我现在清楚了,在我通过数学分化之后.. – javapsy