51Testing软件测试论坛

标题: vbs 数组问题。想了一上午也没想出来,难道是我真的老了么? [打印本页]

作者: calvin_wang    时间: 2008-4-1 14:05
标题: vbs 数组问题。想了一上午也没想出来,难道是我真的老了么?
加入有2个数组

a = array(1,2,3,4,5)
b = array(2,4)

b是a的子集,现想求b的补集,即 c = (1,3,5)该用什么算法??
作者: bagwell333    时间: 2008-4-1 14:29
hi, LZ,俺不是学数学的,vbscript也不熟悉。
这样可以?
a = Array(1, 2, 3, 4, 5)
b = Array(2, 4)
Dim b_isIn
b_isIn = False
For j = 0 To UBound(a)
    For i = 0 To UBound(b)
        If a(j) = b(i) Then
            b_isIn = True
            Exit For
        End If
    Next

    If b_isIn = False Then
        MsgBox (a(j) & " is a result")
    Else
        b_isIn = False
    End If
Next

在msgbox那里换成其它操作。
作者: calvin_wang    时间: 2008-4-1 14:40
恩~~方法可行~~受教了~~~
作者: calvin_wang    时间: 2008-4-1 14:40
谢谢2楼~~~
作者: bagwell333    时间: 2008-4-1 14:47
哈哈,不客气。
作者: bagwell333    时间: 2008-4-1 14:51
如果数组长度很大,效率肯定不行。
如果保证为整数数组,可以先把数组排序,然后二分发查找会好些。
当然如果有第三方程序库最方便,可惜俺不熟vbscipt,正在了解中。
作者: 今天有雾    时间: 2008-4-1 15:19
楼主上的说的不错,如果太长的,QTP可能运行的时候,会出现报错的,如果结合实践中的内容,考虑更好的办法
作者: calvin_wang    时间: 2008-4-1 15:22
数组确实很长~~效率确实很慢~~

啥叫2分法?~~

我不是计算机系的,没怎么接触过编程~~~
作者: bagwell333    时间: 2008-4-1 15:41
就是排序的一种,比如说一个整形数组,已经排序。一个数要确定它是否在数组中或按大小正确插入,不需要遍历数组中所有元素,每次查找范围缩小1/2。

比如目标数组为1,2,5,7,8,10,11....
你要找9的插入位置,那么首先判断数组中间元素与9的大小,如果大,那么下次循环就在后半部分中递归循环,如果小就在前半部分继续递归循环。
比如第一次判断,9比数组的中间元素7大,那么下次循环就在8,10,11之间继续做二分判断。

其实很简单,算法的代码网上有很多哈。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2