Time complexity 几何级数平方和的复杂性
我的数据结构课程作业中有一个问题,我想到了两个算法来解决这个问题,一个是O(n^2)时间,另一个是: T(n)=3*n+1*1+2*2+4*4+8*8+16*16+…+logn*logn 我不确定哪一个更好 我知道从1到logn的几何级数之和是O(logn),因为我可以使用几何级数公式。但这里有几何级数的平方,我不知道如何计算。你可以将其改写为:Time complexity 几何级数平方和的复杂性,time-complexity,Time Complexity,我的数据结构课程作业中有一个问题,我想到了两个算法来解决这个问题,一个是O(n^2)时间,另一个是: T(n)=3*n+1*1+2*2+4*4+8*8+16*16+…+logn*logn 我不确定哪一个更好 我知道从1到logn的几何级数之和是O(logn),因为我可以使用几何级数公式。但这里有几何级数的平方,我不知道如何计算。你可以将其改写为: log n * log n + ((log n) / 2) * ((log n) / 2) + ((log n) / 4) * ((log n) /
log n * log n + ((log n) / 2) * ((log n) / 2) + ((log n) / 4) * ((log n) / 4) ... + 1
如果用x
替换(为了更容易理解)log^2 n
,您将得到:
x + x/4 + x/16 + x/64 + ... + 1
你可以用公式来求级数的和,但是如果你不需要形式化,那么基本的逻辑就足够了。想象一下,你有1/4的馅饼,然后加上1/16的馅饼和1/64的馅饼,你可以清楚地看到,它永远不会到达整块,因此:
x + x/4 + x/16 + x/64 + ... + 1 < 2x
T(n) = O(3*n + log^2 n) = O(n)