51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 5932|回复: 16
打印 上一主题 下一主题

[原创] 怎样快速比较两个数组的值是否相等

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-30 15:39:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Dim A(4)
Dim B(4)
A(0)="A"
A(1)="B"
A(2)="C"
A(3)="D"
A(4)="E"
B(0)="B"
B(1)="A"
B(2)="C"
B(3)="E"
B(4)="D"
怎样快速比较两个数组的值相等?我写了一个方法比较,但是感觉效率太低,大家看看怎么修改?
'********************************************************************************************
'比较两个数组
'相等返回flag=0,否则flag=1
'********************************************************************************************
Function arrayComp(array_db,array_table,flag)
flag=1
aLen=Ubound(array_table,1)
bLen=Ubound(array_db,1)
If  aLen=bLen Then
For i=0 to aLen
        flag=1
        For j=0 to bLen
        flag=1
            If StrComp(array_db(i),array_table(j),1)<>0 and j=aLen Then
                        flag=1
                        Exit For
                        elseif StrComp(array_db(i),array_table(j),1)=0 Then
                        flag=0
                        Exit For
            End If       
        Next
            If flag=1 Then
                Exit For
            End If
Next
else
flag=1
End If
End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-8-30 16:32:40 | 只看该作者
len1 = ubound(arr1)
len2 = ubound(arr2)
compareFlag = True

if len1 <> len2 then
    compareFlag = false
else
  for i = 0 to len1
     if arr1(i) <> arr2(i) then
       compareFlag = Flase
       exit for
     end if
     compareFlag = True
  next
end if
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-8-30 16:35:29 | 只看该作者
a = join(arr1,"!!")
b = join(arr2,"!!")

if a <> b then
  compareFlag = false
else
compareFlag = true
end if

[ 本帖最后由 danmy 于 2007-8-30 16:37 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-8-30 17:37:26 | 只看该作者
哈哈,高手过招就是精彩
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-8-30 19:36:46 | 只看该作者
原帖由 danmy 于 2007-8-30 16:35 发表
a = join(arr1,"!!")
b = join(arr2,"!!")

if a  b then
  compareFlag = false
else
compareFlag = true
end if

不明白为什么a = join(arr1,"!!")?
直接a = join(arr1)不可以吗?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-8-30 23:20:24 | 只看该作者
原帖由 zhumingwei 于 2007-8-30 19:36 发表

不明白为什么a = join(arr1,"!!")?
直接a = join(arr1)不可以吗?


我估计他是作为一个自定义的分隔符,毕竟如果变量里本身就有空格(“space”)的话,以后再拆分回去就有问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-8-30 23:54:50 | 只看该作者
Dim strOriginalString, strOriginalArray(4), strArray, strFinalMsg

strOriginalArray(0) = "This "
strOriginalArray(1) = "is "
strOriginalArray(2) = "an "
strOriginalArray(3) = "example."

'---------------------------------------------------------------------------------------------
'Part one
strOriginalString = Join(strOriginalArray, "!!")
strArray = Split(strOriginalString, "!!", -1, 1)
strFinalMsg = strArray(0) & strArray(1)
strFinalMsg = strFinalMsg & strArray(2)
strFinalMsg = strFinalMsg & strArray(3)
MsgBox strFinalMsg

'==========================================
'Part two
strOriginalString = Join(strOriginalArray)
strArray = Split(strOriginalString, " ", -1, 1)
strFinalMsg = strArray(0) & strArray(1)
strFinalMsg = strFinalMsg & strArray(2)
strFinalMsg = strFinalMsg & strArray(3)
MsgBox strFinalMsg

'---------------------------------------------------------------------------------------------

效果是不一样的。
分隔符有时也很重要。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2007-8-31 00:05:45 | 只看该作者
    不错,在讨论中各有收获,希望这样的帖子越多越好
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2007-8-31 09:30:10 | 只看该作者

    回复 #2 danmy 的帖子

    这样写,如果两个数组的内容相同,但是顺序不同,能比较出来两个数组是相同的吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-7-13 15:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2007-8-31 09:39:11 | 只看该作者
    原帖由 小鱼oO 于 2007-8-31 09:30 发表
    这样写,如果两个数组的内容相同,但是顺序不同,能比较出来两个数组是相同的吗?


    不能,他用的是短路比较
    一旦发现数组元素不一样,立刻置标志位,跳出循环,后面的不再比较了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-8-31 09:46:14 | 只看该作者
    还是用join函数方便
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2007-8-31 10:09:39 | 只看该作者
    数组的比较如果是全部项相等与否,那就太可笑了,这个题目意义不大!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2007-8-31 10:22:41 | 只看该作者
    原帖由 jackymail 于 2007-8-31 10:09 发表
    数组的比较如果是全部项相等与否,那就太可笑了,这个题目意义不大!



    可以先排序,然后再比较啊。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2007-8-31 10:40:30 | 只看该作者

    to lz

    可以考虑先排序,再JOIN比较,可能比你那样快一点,代码看起来也清楚
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2007-8-31 18:03:42 | 只看该作者
    关于数组排序谁有好的方法贴上来研究研究?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2007-9-1 02:38:17 | 只看该作者
    排序算法网上一搜一大把。
    但是,在QTP里,有必要考虑算法速度嘛,我觉得最简单的算法就好了,谁会用QTP来做海量数据处理?!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2007-9-2 22:22:43 | 只看该作者
    精彩
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-27 14:55 , Processed in 0.079853 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表