APPAP标准内部表在ABAP中的时间复杂度是多少?
代码示例:
REPORT zz_complexity_1.
DATA: lt_tab TYPE STANDARD TABLE OF string.
APPEND 'a sample text' INTO lt_tab.
我使用内部表实现了堆栈。我想确定我理解堆栈实现的时间复杂性。
答案 0 :(得分:4)
我希望它与追加ArrayList相同。
这意味着它的时间复杂度为Θ(1)amortized。 摊销常数时间意味着某些操作需要的时间比恒定时间长,但这些操作很少,不会影响我们测量它的方式。如果我们append
万亿项,它将非常接近,但不完全是恒定时间。
当定义标准表时,我们不知道它将包含多少行,因此它可能只分配足够的内存来容纳 X 行。一旦 X 行在表中,下一个append
操作将分配一个额外的 X 行(假设每次都加倍,因为这是大多数语言的工作方式) 。分配完所有新内存后,下一个append
将在内存中为 2X 行分配空间,然后 4X ,然后 8X
https://en.wikipedia.org/wiki/Amortized_analysis#Dynamic_Array