关于《算法》(第 4 版)中对算法性能的均摊分析的疑问

2016-07-13 15:24:58 +08:00
 lxmfly123

1.4.8.5 中所述:(对于算法 1.1 ,即动态调整数组大小的下压栈)假设 N 是 2 的幂。如果数据结构初始为空, N 次连续的 push() 调用需要访问数组元素 N + 4 +8 + 16 + ... + 2N = 5N - 4 次。而程序计数的结果却如下:

N: 1 counter: 1

N: 2 counter: 2

N: 4 counter: 10

N: 8 counter: 26

N: 16 counter: 58

N: 32 counter: 122

N: 64 counter: 250

N: 128 counter: 506

N: 256 counter: 1018

算法 1.1 链接 http://algs4.cs.princeton.edu/code/edu/princeton/cs/algs4/ResizingArrayStack.java.html

请指点。

2102 次点击
所在节点    问与答
1 条回复
yemenchun1
2016-07-13 16:34:33 +08:00
![教授上课的截图]( )

教授为啥算的~3n?

我算的为什么是 5n-2 = n(n 个新元素) + 2n-1(翻倍时复制旧数组) + 2n-1(翻倍时找新数组的位置)呀?

什么样算访问一次数组?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292246

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX