- =和++ = Scala ArrayBuffer上的复杂性

时间:2016-05-05 14:05:31

标签: scala time-complexity complexity-theory

我希望很好地理解与这两个函数相关的复杂性,以便完成适当的复杂性比较。

我的问题是我想从另一个n大小创建一个数组。当第一个变小和变小直到变空时,另一个变得越来越大,直到n大小如下。

while( ArrayBuffer2.size != n ) {
  ArrayBufferX = ArrayBuffer1.filter(...)
  ArrayBuffer1 --= ArrayBufferX
  ArrayBuffer2 ++= ArrayBufferX
}

我知道复杂性取决于迭代次数我们可以告诉它平均需要k次迭代。

我的第二个问题是当我将第一个阵列切换成b桶时会变得多么复杂。

假设我们有一个大小为n的ArrayBuffer,我们将它切成两个大小为n / 2的大小,我们在其上应用与上面相同的步骤,因为知道通常需要的迭代次数不太重要比如果我们有一个阵列。

我希望我足够清楚。 谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

由于数组大小为n且每个步骤中一个项目从一个数组移动到另一个数组,因此需要n次迭代。所以复杂性是O(n)。如果你分成多个桶,问题仍然是一样的。您仍然需要n次操作才能将数据放入第二个数组中。您的来源已更改,但操作数未更改。