以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]按照第一个数组的排序顺序,对后面所有的数组进行排序  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129553)

--  作者:zpsun2003
--  发布时间: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
--  发布时间:2018/12/31 12:45:00
--  
在测试中args(0)会在执行第一次循环后也发生了排序,args(0)应该一直是不变的啊,i从1开始循环的
--  作者:有点甜
--  发布时间:2019/1/2 12:04:00
--  

1、贴出测试代码。

 

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


--  作者:zpsun2003
--  发布时间: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
‘如果用此方法不行,用集合或用二维数组可不可以实现,实际使用时我的第一个数组是成本价格数组,一同生成的其余几十个数组要跟随成本价格排序而排序

--  作者:有点甜
--  发布时间: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
--  发布时间:2019/1/4 18:55:00
--  
非常感谢! args.length改成args(0).length