当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
做'M'和'n'有任何界限?函数的结果没有最小值,如果'n'可以是负数且任意大。 – Tom