我有一个理论问题,如果你在这里建议我会很感激.
说,我们有这两段代码.第一:
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),这与第二个代码时间?
一般来说,这两个代码是否与第一个代码在创建集合时需要额外内存的事实不同?
非常感谢提前.