【发布时间】:2018-04-01 12:26:59
【问题描述】:
我想知道 - 是否可以改进线性搜索算法(在数组上,而不是列表上),以便它可以完成大约一半的计算?
例如,这是基本的线性搜索算法:
i <- 1
while i<=length[a] && a[i]!=v
do i <- i+1
if i>length[a]
then return NIL
else return i
现在,如果它已排序,据我所知,我们可以使用二进制排序或使用上限函数进行大约一半的计算。但是如果给定数组的算法没有排序——我们可以做大约一半的计算吗?
如果我计算正确,预期的计算次数是 (n-1)(n+2)/2n,而最坏的情况是 n-1
是否可以将计算次数减少一半左右?
注意:使用哨兵可能会改善一点,但仍不会将其减少到大约一半的计算量
非常感谢您的帮助
【问题讨论】: