如果考虑动态数组,尽管调整了大小,但推入元素的成本平均是恒定的: https://en.wikipedia.org/wiki/Amortized_analysis#Dynamic_Array
我们可以用以下假设对调整大小的哈希图说同样的话吗
我想知道,使用固定大小的哈希表能否平均带来显着的性能优势
答案 0 :(得分:1)
是的,每次插入时重新分配和重建哈希图的摊销成本是恒定的,只要您在重新分配时始终将其增长某种程度即可。
原因与ArrayList几乎相同-随着HashMap的增长,每个元素将被(重新)插入的映射数是恒定的。
答案 1 :(得分:0)
这实际上取决于您的数据以及您的哈希函数是否均等分布值。当散列函数为许多值返回相同的键时,就会出现问题,然后您会得到一个非常长的ts<-df$KEur
cd <- nonlinearTseries::corrDim(ts,
min.embedding.dim=6,max.embedding.dim=9,
corr.order=2,time.lag=10,
min.radius=0.05,max.radius=5,
n.points.radius=10,
theiler.window=4,
do.plot=TRUE)
use.col = c("#999999", "#E69F00", "#56B4E9", "#009E73",
"#F0E442", "#0072B2", "#D55E00", "#CC79A7")
se=sampleEntropy(cd,do.plot=TRUE,col=use.col,
type="l",xlim=c(0.1,1),
add.legend=T)
se.est <- estimate(se,
regression.range = c(0.1,1),
col=use.col, type="b")
print(se.est)
cat(" Estimated = ",mean(se.est),"\n")
,并且查找时间开始从LinkedList
越来越多地变为O(1)
。有一条一般规则,就是说O(n)
应该大约是load factor
。这意味着您应该在0.75
达到HashMap
的容量后开始调整大小,以使性能保持在75%
左右。有关更多信息,请查看here。