我有数组数组,我想通过它们的第一个元素在数组中对这些数组进行排序。在朱莉娅有可能这样吗?
例如我有
a = (Array{Int64, 1})[]
push!(a, [5, 2 , 3])
push!(a, [3, 1 , 4])
我希望以某种方式排序,结果将是[[3,1,4], [5,2,3]
。数组将根据其第一个元素进行排序。
我需要这个,因为Julia中的堆无法将数组作为堆中的元素。任何想法???
答案 0 :(得分:11)
版本1.0更新:
sort(a)
那就是它。 Julia版本1.0定义<
数组作为我在下面描述的词典排序,因此您不需要再手动指定它。
以前的答案为0.6
您可以将自定义lt
(小于)运算符指定为keyword argument to sort
:
julia> sort(a, lt=(x,y)->isless(x[1], y[1]))
2-element Array{Array{Int64,1},1}:
[3,1,4]
[5,2,3]
更一般地说,您可以使用lexless
以字典顺序对数组进行稳健排序:
julia> push!(a, [5, 1, 1])
3-element Array{Array{Int64,1},1}:
[5,2,3]
[3,1,4]
[5,1,1]
julia> sort(a, lt=lexless)
3-element Array{Array{Int64,1},1}:
[3,1,4]
[5,1,1]
[5,2,3]