请问数组如何快速合并
a(10008),b(10008),c(20008),c(20008)是a(10008)与b(9-10008)的并集,
一定要循环吗
for i=1 to 10008
c(i)=a(i)
next
for i=10009 to 20008
c(i)=b(i-10008)
next
但这样太慢了,有快一点的方法吗
...全文
16010打赏收藏
请问数组如何快速合并
请问数组如何快速合并 a(10008),b(10008),c(20008),c(20008)是a(10008)与b(9-10008)的并集, 一定要循环吗 for i=1 to 10008 c(i)=a(i) next for i=10009 to 20008 c(i)=b(i-10008) next 但这样太慢了,有快一点的方法吗
'这是完整的测试程序
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Byte, Source As Byte, ByVal Length As Long)
Private Sub Form_Load()
Dim a(1 To 100008) As Byte
Dim b(1 To 100008) As Byte
Dim c(1 To 200008) As Byte
Dim i As Long, s As Single
For i = 1 To 100008
a(i) = Rnd * 255
b(i) = Rnd * 255
Next i
s = Timer
For i = 1 To 100008
c(i) = a(i)
Next i
Debug.Print (Timer - s) * 1000 & "毫秒"
For i = 100009 To 200008
c(i) = b(i - 100008)
Next i
Debug.Print (Timer - s) * 1000 & "毫秒"
Erase c
s = Timer
CopyMemory c(1), a(1), 100008
CopyMemory c(100009), b(1), 100000
Debug.Print (Timer - s) * 1000 & "毫秒"
End Sub
用VB循环大约需要90毫秒,而用内存拷贝为0毫秒