我正在解决段树和四叉树相关的问题;虽然我注意到在段树中,我们将一维数组分成2 个(2^1)段并递归地执行此操作,直到基本情况到达。同样,在四叉树中,我们将 2D 网格细分为4 (2^2)同样,在四叉树中,我们在每一步所有这些分治机制都是为了实现对数时间复杂度。没有冒犯的意思!
但是为什么我们不将数组细分为4 (4^1) 个或更多部分而不是分段树中的 2 个部分呢?为什么我们不将网格分成16 (4^2) 个部分而不是 4 个?通过这样做,我们可以实现O(log(N))
性能,但它会更好log
,因为log(N)
(base 4) 比log(N)
(base 2) 更好。
我知道在这种情况下,实施会有点困难。是否存在内存开销问题?还是什么?
如果我在任何地方错了,请纠正我。谢谢!