请教VB中一个数组的问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 02:13:50
一个数组里有十万个数据,我想把前100即shuzu(0)-shuzu(99)里的数移到最后,另外的99900以次前移,请问有什么办法最省时间呢?我的办法是先把前100个取出来放到别的数组,然后:
k=0
for i=100 to 99999
shuzu(k)=shuzu(i)
k=k+1
next i
然后再把别的数组的值给shuzu(99900)-shuzu(99999)

shuzu(

使用API函数 CopyMemory,内存操作 速度快~
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

用三次完成任务
Dim buffer(100) As Byte 类型应该一致
Call CopyMemory(shuzu(0), buffer(0), 100) //保存前100个
Call CopyMemory(shuzu(100), buffer(0),99900) //保存从100开始的999000个
Call CopyMemory(buffer(0), shuzu(99900), 100) //保存前100个到99900

最简单的办法
redim shuzu(100100)
for i=0 to 99
shuzu(i+100000)=shuzu(i)
next i
要是想再调用数组,那就从100开始好了!呵呵,否则你如果想全部前移,那么就必须为数组重新赋值了!

这是数据交换,,,

dim temp'临时变量
k=100'交换个数
z=ubound(shuzu)'数据总个数
for i=0 to k-1
temp=shuzu(i)
shuzu(i)=shuzu(z-(k-1-i))'后100的第一个写到数组的第一个
shuzu(z-(k-1-i))=temp'数据组的第一个写入后100的第一个
next
这样结束后,就交换好了,,,没有试过,改变k的值,就可以改变要交换的个数

交换,最好是通过中介变量传值