假设我有一组东西(为了简单起见,这里是数字),我想使用SortBy函数按照某个函数进行排序。例如,以下代码通过最后一位数字对数字列表进行排序:
请注意这些数字中有两个(或者全部)数字的末位相同。因此,以哪种顺序返回它们并不重要。在这种情况下,Mathematica 以相反的顺序返回它们。如何确保所有平局都有利于按原始列表中的顺序排序的项目?
(我知道这有点琐碎,但我觉得这种情况时不时会出现,所以我认为把它放在 StackOverflow 上会很方便。如果没有人比我更快地想出答案,我会把我想到的任何东西作为答案发布。)
尝试使其更易搜索:最小干扰排序、最少交换排序、自定义平局处理、代价高昂的交换排序、稳定排序。
附注:感谢Nicholas指出这被称为稳定排序。我差一点就想到了!这里是另一个链接:Link
SortBy[{301, 201}, Mod[#,10]&]
请注意这些数字中有两个(或者全部)数字的末位相同。因此,以哪种顺序返回它们并不重要。在这种情况下,Mathematica 以相反的顺序返回它们。如何确保所有平局都有利于按原始列表中的顺序排序的项目?
(我知道这有点琐碎,但我觉得这种情况时不时会出现,所以我认为把它放在 StackOverflow 上会很方便。如果没有人比我更快地想出答案,我会把我想到的任何东西作为答案发布。)
尝试使其更易搜索:最小干扰排序、最少交换排序、自定义平局处理、代价高昂的交换排序、稳定排序。
附注:感谢Nicholas指出这被称为稳定排序。我差一点就想到了!这里是另一个链接:Link