问题a:
对于长度为k的数组插入排序,时间复杂度为
Θ(k2)
,n/k个数组的复杂度为
Θ(n/k⋅k2)=θ(nk)
问题b:
递归树的层数为
Θ(lg(n/k))
,每一次合并代价均为
Θ(n)
(与标准merge没区别)故复杂度为
Θ(nlg(n/k))
问题c:
Θ(nk+nlg(n/k))=Θ(nlgn+n(k−lgk))
由于k和lgk中,lgk量级很小,所以不会产生影响,故
Θ(nlgn+n(k−lgk))=Θ(nlgn+nk)
故k最大量级为
Θ(lgn)
问题d:
测试代码是xcode写的
测试两百万数据排序,按最坏情况测试
个人感觉k取2的整数次幂会比较好
实测k=8感觉比较好
2-1
最新推荐文章于 2024-03-19 23:00:00 发布