Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 将堆栈实现为阵列的成本分析?_Algorithm_Stack_Time Complexity_Big O_Amortized Analysis - Fatal编程技术网

Algorithm 将堆栈实现为阵列的成本分析?

Algorithm 将堆栈实现为阵列的成本分析?,algorithm,stack,time-complexity,big-o,amortized-analysis,Algorithm,Stack,Time Complexity,Big O,Amortized Analysis,请参考上述材料的答案2。我可以把课文一直讲到那一点。我似乎总是在没有说明的情况下放松概念化,这可能是因为我对数学符号不熟悉 我了解昂贵操作的成本(当堆栈已满时,阵列将加倍) 1+2+4+8+…+2^i,其中i是该序列的索引。所以指数0=1,1=2,2=4,3=8 我可以看到昂贵操作的顺序,但我对以下解释感到困惑 现在,在n个操作的任意序列中,调整大小的总成本为 1 + 2 + 4 + 8 + ... + 2^i对于某些2^i

请参考上述材料的答案2。我可以把课文一直讲到那一点。我似乎总是在没有说明的情况下放松概念化,这可能是因为我对数学符号不熟悉

我了解昂贵操作的成本(当堆栈已满时,阵列将加倍)

1+2+4+8+…+2^i,其中i是该序列的索引。所以指数0=1,1=2,2=4,3=8

我可以看到昂贵操作的顺序,但我对以下解释感到困惑

现在,在n个操作的任意序列中,调整大小的总成本为 1 + 2 + 4 + 8 + ... + 2^i对于某些2^i 我不明白那个解释

调整大小的总成本为1+2+4+8+…+2^i对于某些2^i 对于某些
2^i

它是否说操作数n总是大于2^i?n代表操作的数量还是数组的长度

以下是我不懂的:

如果所有操作都是推送,那么2^i将是2的最大幂 少于。这个总数最多是2n− 一,


有人能解释一下吗?

n
是最大的堆栈大小,此时的内部数组大小是两个
2^(i+1)>=n的最小幂,所以最后一次扩展操作需要
2^i最后一个语句如何“如果所有操作均为推送,则2^i将是小于n的2的最大幂。这个总数最多是2n− 1”?我不明白。特别是“2^I将是2的最大幂次,小于n”
n
push创建堆栈大小
n
。数组大小是多少?一些2的幂次。什么幂次?提供
2^(I+1)>=n
为了容纳堆栈项我理解你的意思,我认为这是作者解释其符号的方式。就像“2^I将是2小于n的最大幂”直接翻译成
2^I和
2^I一样
1 + 2 + 4 + 8 + ... + 2^i = 2^(i+1) - 1