相关疑难解决方法(0)

在VBA中使用这两种循环方式的时间复杂度有什么区别?

我有一个理论问题,如果你在这里建议我会很感激.

说,我们有这两段代码.第一:

For Each cell In rng1
    collectionOfValues.Add (cell.Value)
Next

For Each cell In rng2
   collectionOfAddresses.Add (cell.Address)
Next

For i = 1 To collectionOfAddresses.Count
   Range(collectionOfAddresses.Item(i)) = collectionOfValues.Item(i)
Next i
Run Code Online (Sandbox Code Playgroud)

在这里,我们将一个范围的地址添加到某个集合,将另一个范围的值添加到第二个集合,然后使用这些值填充这些地址上的单元格.

这是第二个代码,它是相同的:

For i = 1 To rng1.Rows.Count
  For j = 1 To rng1.Columns.Count
       rng2.Cells(i, j) = rng1.Cells(i, j)
  Next j
Next i
Run Code Online (Sandbox Code Playgroud)

所以,问题是 - 两种情况下执行的时间是什么时候?我的意思是,很明显第二种情况是O(n ^ 2)(为了使我们更容易假设范围是正方形).

第一个怎么样?For Each被认为是嵌套循环吗?

如果是这样,是否意味着第一个代码的时间是O(n ^ 2)+ O(n ^ 2)+ O(n ^ 2)= 3*O(n ^ 2),这与第二个代码时间?

一般来说,这两个代码是否与第一个代码在创建集合时需要额外内存的事实不同?

非常感谢提前.

excel big-o vba excel-vba time-complexity

3
推荐指数
1
解决办法
1623
查看次数

标签 统计

big-o ×1

excel ×1

excel-vba ×1

time-complexity ×1

vba ×1