以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  用Sort进行多数组联时,排序的依据是什么  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186496)

--  作者:gumpjunior
--  发布时间:2023/5/6 20:40:00
--  用Sort进行多数组联时,排序的依据是什么

图片点击可在新窗口打开查看此主题相关图片如下:问问题.png
图片点击可在新窗口打开查看
在帮助文档的:开发指南->编程基础->数组,最后部分给了个例子,是用Sort对两个数组进行联动排序,如下:

Dim nms() As String = {"A","B","C"} \'学生姓名
Dim vals() As Integer = {8, 6, 7} \'
对应分数
Array.Sort(vals, nms) \'
第一个数组为排序数组,第二个数组跟随第一个数组排序
Output.Show(nms(0) & "=" & vals(0))
Output.Show(nms(1) & "=" & vals(1))
Output.Show(nms(2) & "=" & vals(2))


我对nums改动了一下,我跑代码时,设定nms()= {"B", "C", "D", "A"}

Dim nms() As String = {"A","B","C" ,D} \'学生姓名 ? ? ? //只在这里加了个D,其余没动。
Dim vals() As Integer = {8, 6, 7} \'
对应分数
Array.Sort(vals, nms) \'
第一个数组为排序数组,第二个数组跟随第一个数组排序
Output.Show(nms(0) & "=" & vals(0))
Output.Show(nms(1) & "=" & vals(1))
Output.Show(nms(2) & "=" & vals(2))


输出结果如下:

C=6

D=7

B=8


问题:

1.Sort函数的说明页面里并没有对“多序列排序”进行解释。

请问,Sort进行两数组联排时发生了什么?排序规则是啥啊?

2.排序的代码是:Array.Sort(vals, nms)

valsnms都写在了括号里,为什么排序是按vals的顺序排序,而不是以nms的排序顺序为基准呢?


--  作者:有点蓝
--  发布时间:2023/5/7 20:41:00
--  
1、这种底层的原理请自行找.net这个sort函数的源码研究。

2、这个是语法的强制规定,没有为什么。可能是发明这个函数的人喜欢这样用吧