我正在寻找对事情如何运作的理解,而不仅仅是答案。虽然答案是答案,但我正在给予我的答案,但我并不确定,而且这些分析的文字也没有多少。
我很清楚这不是你应该如何实现堆栈,但这是我们已经给出的场景。
A部分
插入到包含N个整数的(未排序)数组a(0)的插槽a [0]中的最坏情况,平均情况和最佳情况运行时间是什么?给出界限。
B部分
如果每个插入都发生在[0],那么将N个整数插入最初为空的数组a(表示堆栈)的运行时间是多少?给出一个严格的O界限并解释你的答案。
教练非常清楚我们正在对[0]进行所有插入,并且没有从这个“堆栈”中删除。
我的分析是这个
假设:a.length>> Ñ
最好的情况是Theta(1),当我们插入一个空的“堆栈”时发生。
最坏情况是Theta(N),因为作为插入过程的一部分,我们必须移动N-1个元素以在[0]处腾出空间。
平均情况也是Theta(N),因为无论怎样,我们总是要转移N-1个元素。
摊销案件
每个插入成本(N-1)并且我们有N个元素,因此我们使用:
N
Sum (i) = [ N(N+1) ] / 2 = N^2 / 2 which is O(N^2) for N insertions
i=1
摊销成本将为N ^ 2 / N = O(N)
我遇到的问题是这看起来很简单。我错过了一些东西,还是我已经把它丢了?