Julia 如何对包含向量的列表进行排序?

Julia 如何对包含向量的列表进行排序?,julia,Julia,我有一个包含一些二维点的列表。 比如说 List=[270 180 -180;-570 -510 -67.5] 我要按元素一排序 List=[-180 180 270;-67.5 -510 -570] 当我使用排序函数时,代码给出了这个列表 -180.0 180.0 270.0 -570.0 -510.0 -67.5 我怎样才能达到这个目标呢 请帮帮我。谢谢你的帮助。所以你有一个对象列表,我想它实际上是一个2D数组,有两行多列。每列代表一对坐标,您需要一个排序的列表,例如基于排序

我有一个包含一些二维点的列表。 比如说

List=[270 180 -180;-570 -510 -67.5]
我要按元素一排序

List=[-180 180 270;-67.5 -510 -570]
当我使用排序函数时,代码给出了这个列表

-180.0   180.0  270.0
-570.0  -510.0  -67.5
我怎样才能达到这个目标呢


请帮帮我。谢谢你的帮助。

所以你有一个对象
列表
,我想它实际上是一个2D数组,有两行多列。每列代表一对坐标,您需要一个排序的
列表,例如基于排序的第一行坐标。我会这样做:

SortRow=List[1,:]
3-element Array{Float64,1}:
270.0
180.0
-180.0
对该元素排序,使用
indexin
内置函数获取索引:

IndexRow=indexin(sort(SortRow),SortRow)
3-element Array{Union{Nothing, Int64},1}:
3
2
1
现在重建
列表
对象:

SortedPoints = List[:,IndexRow]
2×3 Array{Float64,2}:
-180.0   180.0   270.0
-67.5  -510.0  -570.0

与使用
indexin
来“反向搜索”每个已排序元素不同,正如user172056所建议的那样,我建议为第一行构建排序排列,并使用该排列建立索引:

julia> l[:, sortperm(view(l, 1, :))]
2×3 Array{Float64,2}:
 -180.0   180.0   270.0
  -67.5  -510.0  -570.0
如果以后还计划按第二行排序,则可能还需要指定一个稳定的排序算法(默认情况下似乎使用不稳定的算法):

julia> l[:, sortperm(view(l, 1, :), alg = Base.Sort.DEFAULT_STABLE)]
2×3 Array{Float64,2}:
 -180.0   180.0   270.0
  -67.5  -510.0  -570.0