在JULIA

时间:2016-03-12 20:52:31

标签: arrays sorting julia

我有数组数组,我想通过它们的第一个元素在数组中对这些数组进行排序。在朱莉娅有可能这样吗?

例如我有

a = (Array{Int64, 1})[]
push!(a, [5, 2 , 3])
push!(a, [3, 1 , 4])

我希望以某种方式排序,结果将是[[3,1,4], [5,2,3]。数组将根据其第一个元素进行排序。

我需要这个,因为Julia中的堆无法将数组作为堆中的元素。任何想法???

1 个答案:

答案 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]