Foxtable(狐表)用户栏目专家坐堂 → 数组排序出错,帮忙给分析下吧


  共有2064人关注过本帖平板打印复制链接

主题:数组排序出错,帮忙给分析下吧

帅哥哟,离线,有人找我吗?
zpsun2003
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:130 积分:1250 威望:0 精华:0 注册:2018/4/19 21:34:00
数组排序出错,帮忙给分析下吧  发帖心情 Post By:2019/6/20 23:44:00 [只看该作者]

下面一段代码是实现多个数组排序的,但是排序出现了错误,帮忙分析下吧
定义了一个排序数组的函数szpx:

For i As Integer = 1 To args.length-1
    Dim pxsz(args(0).length-1) As Double   '定义一个数组pxsz
    args(0).CopyTo(pxsz, 0)
    Array.Sort(pxsz,args(i))  'pxsz数组为排序数组,args(i)数组跟随pxsz数组排序
Next
Array.Sort(args(0))  '对args(0)数组进行排序
'多个数组跟随第一个数组排序

以下是引用szpx函数的代码:

‘按照jhdyccs1的长度将下面几个数组重新定义长度
    redim Preserve cbjgszzz1(jhdyccs1)
    redim Preserve txzjtxdzszzz1(jhdyccs1)
    redim Preserve txczydzbszzz1(jhdyccs1)
    redim Preserve dyzsszzz1(jhdyccs1)
    redim Preserve dyxghszzz1(jhdyccs1)
    redim Preserve dyxgkszzz1(jhdyccs1)
    redim Preserve dydtezxjlszzz1(jhdyccs1)
    redim Preserve gycsszzz1(jhdyccs1)
    redim Preserve gyxghszzz1(jhdyccs1)
    redim Preserve gyxgkszzz1(jhdyccs1)
    redim Preserve dyydgsszzz1(jhdyccs1)
    redim Preserve gyydgsszzz1(jhdyccs1)
    redim Preserve dybydgsszzz1(jhdyccs1)
    redim Preserve zkdccszzz1(jhdyccs1)
    redim Preserve gybydgsszzz1(jhdyccs1)

   ‘进行数组排序’ Functions.Execute("szpx",cbjgszzz1,txzjtxdzszzz1,txczydzbszzz1,dyzsszzz1,dyxghszzz1,dyxgkszzz1,dydtezxjlszzz1,gycsszzz1,gyxghszzz1,gyxgkszzz1,dyydgsszzz1,gyydgsszzz1,dybydgsszzz1,zkdccszzz1,gybydgsszzz1)

‘按照bjdx-1的长度截取数组
    redim Preserve cbjgszzz1(bjdx-1)
    redim Preserve txzjtxdzszzz1(bjdx-1)
    redim Preserve txczydzbszzz1(bjdx-1)
    redim Preserve dyzsszzz1(bjdx-1)
    redim Preserve dyxghszzz1(bjdx-1)
    redim Preserve dyxgkszzz1(bjdx-1)
    redim Preserve dydtezxjlszzz1(bjdx-1)
    redim Preserve gycsszzz1(bjdx-1)
    redim Preserve gyxghszzz1(bjdx-1)
    redim Preserve gyxgkszzz1(bjdx-1)
    redim Preserve dyydgsszzz1(bjdx-1)
    redim Preserve gyydgsszzz1(bjdx-1)
    redim Preserve dybydgsszzz1(bjdx-1)
    redim Preserve zkdccszzz1(bjdx-1)
msgbox( 310 & " " & cbjgszzz1(309) & "  " & gyydgsszzz1(309) & "  " & dybydgsszzz1(309) & "  " & zkdccszzz1(309) & "  " & gybydgsszzz1(309))
‘此时输出的数值为:310 48166.53 4 0 17.5 4’
msgbox( 311 & " " & cbjgszzz1(310) & "  " & gyydgsszzz1(310) & "  " & dybydgsszzz1(310) & "  " & zkdccszzz1(310) & "  " & gybydgsszzz1(310))
‘此时输出的数值为:310 48166.53 3 0 19 3’
(以上的数值是正确的)
   ‘再次进行数组排序’ Functions.Execute("szpx",cbjgszzz1,txzjtxdzszzz1,txczydzbszzz1,dyzsszzz1,dyxghszzz1,dyxgkszzz1,dydtezxjlszzz1,gycsszzz1,gyxghszzz1,gyxgkszzz1,dyydgsszzz1,gyydgsszzz1,dybydgsszzz1,zkdccszzz1,gybydgsszzz1)

msgbox( 310 & " " & cbjgszzz1(309) & "  " & gyydgsszzz1(309) & "  " & dybydgsszzz1(309) & "  " & zkdccszzz1(309) & "  " & gybydgsszzz1(309))
‘此时输出的数值为:310 48166.53 3 0 17.5 3’
msgbox( 311 & " " & cbjgszzz1(310) & "  " & gyydgsszzz1(310) & "  " & dybydgsszzz1(310) & "  " & zkdccszzz1(310) & "  " & gybydgsszzz1(310))
‘此时输出的数值为:310 48166.53 4 0 19 4’

再次排序后就出现了错误,不知道哪出错了。请老师帮忙分析一下。是排序数组有问题,还是数组截取后发生了什么变化呢

 回到顶部