我在执行有关运行时间的任务时遇到问题。
问题陈述是:“Isabel 有一种有趣的方法来对包含 n 个整数的数组 A 中的值求和,其中 n 是 2 的幂。她创建了一个大小为 A 一半的数组 B,并设置 B[i] = A[2i] + A[2i+1],对于 i=0,1,…,(n/2)-1。如果 B 的大小为 1,则输出 B[0]。否则,她将 A 替换为B,重复这个过程。她的算法的运行时间是多少?
这会被认为是 O(log n) 还是 O(n)?我在想 O(log n) 因为你会继续将数组分成两半,直到你得到最终结果,我相信 O(log n) 的基础是你不遍历整个数据结构。但是,为了计算总和,您必须访问数组中的每个元素,因此我认为它可能是 O(n)。任何帮助理解这一点将不胜感激。