Foxtable(狐表)用户栏目专家坐堂 → 用Sort进行多数组联时,排序的依据是什么


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

主题:用Sort进行多数组联时,排序的依据是什么

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


加好友 发短信
等级:婴狐 帖子:35 积分:468 威望:0 精华:0 注册:2018/3/9 22:05:00
用Sort进行多数组联时,排序的依据是什么  发帖心情 Post By:2023/5/6 20:40:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:问问题.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的排序顺序为基准呢?


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


加好友 发短信
等级:超级版主 帖子:106641 积分:542382 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/7 20:41:00 [只看该作者]

1、这种底层的原理请自行找.net这个sort函数的源码研究。

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

 回到顶部