各位高手,我想求教:
两个数组间的快速合并:
如:两个数组大小不一样:
dim a(3) , b(2) as string
a(0)="a" : a(1)="g" : a(2)="v" : a(3)="h"  
b(0)="g 5" : b(1)="v 6" : b(2)="h 8"合并后的数组为:
a(0)="a"  
a(1)="g 5"  
a(2)="v 6"  
a(3)="h 8"  我想把数组b里的数据替换掉数组a里相应的数据,通过循环我写的代码速度较慢,求教高手快速地合并代码,谢谢!!!

解决方案 »

  1.   

    如果存在a和b里的元素有1-1的映射关系,是比较好写的。
    对照例子写的,
       for i=0 to ubound(b)
         s=left(b(i))
        for j=0 to ubound(a)
           if left(a(j))=s then
             a(j)=b(i)
             goto nt
           end if
        next
      nt:
      next
      

  2.   


        Dim a(3), b(2) As String
        a(0) = "a": a(1) = "g": a(2) = "v": a(3) = "h"
        b(0) = "g 5": b(1) = "v 6": b(2) = "h 8"
        
        Dim d(127) As String, i As Integer
        For i = 0 To UBound(b)
            d(Asc(Left(b(i), 1))) = b(i) '建立索引
        Next i
        
        Dim n As Integer
        For i = 0 To UBound(a)
            n = Asc(a(i))
            If Len(d(n)) Then a(i) = d(n) '替换
        Next i
    应该比较快,次数m+n,若b()的首字符都是字母,那么d()的空间还可缩小,你也不会在意这几十个内存吧。