VB怎样在数组之间匹配数据?

例如我有两个数组,数组1和数组2
数组1存着一定数量的号码
数组2也存折一定数量的号码,但是数组2的号码要比数组1多
而数组1的号码在数组2中全部都有,数组2比数组1多一些其他的号码
我要怎样对比数组1和数组2中的号码,取出数组2对应数组1的数组数,因为我还其他的数组存着别的数据,其他数组数是对应数组2的
大概就是这样的:
for i = 0 to ubound(数组2)
if 数组2(i) = 数组1(i) then

执行别的代码

end if

next i

但是这样就有一个问题了,如果i是1的时候,就对比数组1(1)和数组2(1),可是数组1中的号码顺序是打乱的
所以就按照下面这种方法执行了:

for i = 0 to ubound(数组2)
if 数组2(i) = 数组1(1) then
执行别的代码
end if
next i

让数组2所有的数组(数组2(i))对比数组1(1)的数据,可是这样,我要怎样让数组2对比完所有之后数组1(1)+1,再继续对比呢?

伤脑筋啊!帮忙解决的,还会再加分!

第1个回答  2013-01-29
要解决这个问题办法很多,如何选择取决于应用环境和具体需求。
使用双重循环是最简单的办法。这个方案虽然计算成本较高,但适应性强,最容易实现。如果是有序数组,可以通过二分法迅速定位目标位置;你也可以构造一个临时数组,通过“摘除法”减少比较次数。

除此之外,预先构造一个对应表也是很有效率的方法。磨刀不误砍柴工。

如果有环境的支持,那效率和代码都要省很多。最典型的就是LinQ。如果你使用的是VB.net,并且框架是3.0版本以上,就可以得到LinQ的支持了。或者,如果你的数据是从数据库中获取的,那么使用SQL语句重新从数据库获取过滤过的数据比自己双重循环比较效率还要高。
第2个回答  2013-01-29
用嵌套循环 外层循环数组1也就是小的 保证每个元素都检查一次 内层用数组2
在内层循环里写 if 判断是否满足条件 如果满足 则执行 exit for 跳出内循环 继续数组1的下一个元素的检查
如果还不明白 加我百度HI 吧
第3个回答  2013-01-29
这很简单啊。比如数组2=(1,2,3,4,5) 数组1=(1,2,3)
for j=0 to 2
for i=0 to 4
if 数组2(i)=数组1(j)then ‘数组2中的所有项跟数组1中的第j项比较。
怎么怎么样
end if
next i
next j
这样就很容易理解了。不懂再问我。
第4个回答  2013-01-29
for i = 0 to ubound(数组2)
for j= 0 to ubound(数组1)
if 数组2(i) = 数组1(j) then
执行别的代码
end if
next j
next i
'在第一个循环里嵌套另一个循环,使得数组1(j)不断增长,然后就搞定了本回答被提问者采纳
第5个回答  2013-01-29
使用两个FOR嵌套。
for i=0 to n1
for ii=0 to n2
if 数组2(i) = 数组1(ii) then

endif
next ii
next i
相似回答