请问数组如何快速合并

wzxypq 2001-06-20 10:50:00
请问数组如何快速合并
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
但这样太慢了,有快一点的方法吗
...全文
160 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
joeking 2001-06-21
  • 打赏
  • 举报
回复
我的意思是做成进程内循环,然后分成几段来循环,你看呢?
joeking 2001-06-21
  • 打赏
  • 举报
回复
如果你怕慢,在算法上下下功夫,也许切成几块来循环会快一些。
bucher 2001-06-21
  • 打赏
  • 举报
回复
是做文件合并吗?直接添加在文件后面即可,速度非常快。
wzxypq 2001-06-21
  • 打赏
  • 举报
回复
thanks a lot
ltpao 2001-06-21
  • 打赏
  • 举报
回复
'这是完整的测试程序
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毫秒

ltpao 2001-06-21
  • 打赏
  • 举报
回复
1、CopyMomory c(1),a(1),10008
2、CopyMomory c(10009),b(1),10008
不过该数组要Byte型的


ltpao 2001-06-21
  • 打赏
  • 举报
回复
可以用CopyMemory试一下
1、CopyMomory c(1),a(1)
1、CopyMomory c(10009),b(1)

wzxypq 2001-06-21
  • 打赏
  • 举报
回复
是做文件合并,但是要把第二个文件的头部去掉如何直接添加
wzxypq 2001-06-20
  • 打赏
  • 举报
回复
高手可不一定要循环的,c可用指针, 但vb不知道了
「已注销」 2001-06-20
  • 打赏
  • 举报
回复
没办法

你想一想

就算系统给你提供一个函数

难道就不用循环么

@_@

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧