Foxtable(狐表)用户栏目专家坐堂 → [求助]按照第一个数组的排序顺序,对后面所有的数组进行排序


  共有2831人关注过本帖树形打印复制链接

主题:[求助]按照第一个数组的排序顺序,对后面所有的数组进行排序

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


加好友 发短信
等级:幼狐 帖子:137 积分:1329 威望:0 精华:0 注册:2018/4/19 21:34:00
[求助]按照第一个数组的排序顺序,对后面所有的数组进行排序  发帖心情 Post By:2018/12/31 12:42:00 [只看该作者]

1、自定义一个内部函数,目的是能按照第一个数组的排序顺序,后面所有的数组按第一个数组的顺序进行排序,功能和Array.Sort(数组1,数组2)是一样的,以下代码不知道哪错了,向大神求助。
2、二维数组中有没有一个直接可以实现此功能的函数。

For i As Integer = 1 To args.length-1
    Dim pxsz() As Double
    pxsz = args(0)
    Array.Sort(pxsz,args(i))
Next
array.Sort(args(0))
'按照第一个数组的排序顺序,对后面所有的数组进行排序



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


加好友 发短信
等级:幼狐 帖子:137 积分:1329 威望:0 精华:0 注册:2018/4/19 21:34:00
  发帖心情 Post By:2018/12/31 12:45:00 [只看该作者]

在测试中args(0)会在执行第一次循环后也发生了排序,args(0)应该一直是不变的啊,i从1开始循环的

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/2 12:04:00 [只看该作者]

1、贴出测试代码。

 

2、说明最后需要达到的效果。


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


加好友 发短信
等级:幼狐 帖子:137 积分:1329 威望:0 精华:0 注册:2018/4/19 21:34:00
[求助]按照第一个数组的排序顺序,对后面所有的数组进行排序  发帖心情 Post By:2019/1/3 21:49:00 [只看该作者]

内部函数(szpx):
Dim pxsz() As Double   '定义一个数组pxsz
For i As Integer = 1 To args.length-1    
    pxsz = args(0)    '将args(0)数组赋值给pxsz数组
    Array.Sort(pxsz,args(i))  'pxsz数组为排序数组,args(i)数组跟随pxsz数组排序
Next
array.Sort(args(0))   '再将args(0)数组排序
'按照第一个数组的排序顺序,后面所有的数组跟随第一个数组排序

测试代码为:

Dim s1() As Double = {1,3,6,2,7,4}
Dim s2() As Double = {2,3,5,1,7,8}
Dim s3() As Double = {10,3,1,2,7,20}
Dim s4() As Double = {4,7,6,2,7,1}
Dim s5() As Double = {20,3,6,2,7,2}
Functions.Execute("szpx",s1,s2,s3,s4,s5)
Output.Show(s2(5))
Output.Show(s3(5))
Output.Show(s4(5))
Output.Show(s5(5))
'目的是让s2,s3,s4,s5数组按s1排序后也跟随着s1排序,但只有s2排序能实现,其余的都实现不了,返回的结果为7 20 1 2,实际想要的是7,7,7,7
‘如果用此方法不行,用集合或用二维数组可不可以实现,实际使用时我的第一个数组是成本价格数组,一同生成的其余几十个数组要跟随成本价格排序而排序

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/3 21:57:00 [只看该作者]

改成

 

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


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


加好友 发短信
等级:幼狐 帖子:137 积分:1329 威望:0 精华:0 注册:2018/4/19 21:34:00
  发帖心情 Post By:2019/1/4 18:55:00 [只看该作者]

非常感谢! args.length改成args(0).length

 回到顶部