我希望很好地理解与这两个函数相关的复杂性,以便完成适当的复杂性比较。
我的问题是我想从另一个n大小创建一个数组。当第一个变小和变小直到变空时,另一个变得越来越大,直到n大小如下。
while( ArrayBuffer2.size != n ) {
ArrayBufferX = ArrayBuffer1.filter(...)
ArrayBuffer1 --= ArrayBufferX
ArrayBuffer2 ++= ArrayBufferX
}
我知道复杂性取决于迭代次数我们可以告诉它平均需要k次迭代。
我的第二个问题是当我将第一个阵列切换成b桶时会变得多么复杂。
假设我们有一个大小为n的ArrayBuffer,我们将它切成两个大小为n / 2的大小,我们在其上应用与上面相同的步骤,因为知道通常需要的迭代次数不太重要比如果我们有一个阵列。
我希望我足够清楚。 谢谢您的帮助。
答案 0 :(得分:0)
由于数组大小为n且每个步骤中一个项目从一个数组移动到另一个数组,因此需要n次迭代。所以复杂性是O(n)。如果你分成多个桶,问题仍然是一样的。您仍然需要n次操作才能将数据放入第二个数组中。您的来源已更改,但操作数未更改。