对于排序,我们知道,有sort,sort!等函数。但这个按单行或单列比较好用,如果有复杂的需求,如何整?
比如:
julia> a =[7 3 5; 6 -1 -4; 9 -2 8]
3×3 Array{Int64,2}:
7 3 5
6 -1 -4
9 -2 8
julia> sortslices(a, dims=1, alg=InsertionSort, lt=(x,y)->isless(sum(x),sum(y)))
3×3 Array{Int64,2}:
6 -1 -4
7 3 5
9 -2 8
julia> b =[7 3 5; 6 8 1; 9 4 1]
3×3 Array{Int64,2}:
7 3 5
6 8 1
9 4 1
julia> sortslices(b, dims=1, alg=InsertionSort, lt=(x,y)->isless(sum(x),sum(y)))
3×3 Array{Int64,2}:
9 4 1
7 3 5
6 8 1
julia> sortslices(b, dims=1, alg=InsertionSort, lt=(x,y)->isless(sum(x),sum(y)))
3×3 Array{Int64,2}:
9 4 1
7 3 5
6 8 1
julia> c =[7 3 5; 6 8 1; 9 4 1;5 5 5]
4×3 Array{Int64,2}:
7 3 5
6 8 1
9 4 1
5 5 5
julia> sortslices(c, dims=1, alg=InsertionSort, lt=(x,y)->isless(sum(x),sum(y)))
4×3 Array{Int64,2}:
9 4 1
7 3 5
6 8 1
5 5 5
# 注意完全不等同于 sort!
julia> sort!(c,dims =1 ,by= x->sum(x))
4×3 Array{Int64,2}:
5 3 1
6 4 1
7 5 5
9 8 5
上面就是按行,具体需求是,行的值从最小到最大来排序。
注意:sort!和sortslice是完全不一样的。
问题1,如果有相同的,如果排?按原先出现的顺序来排【自然排】。
问题2,针对出现的“自然排”,有没有进行二次排序的可能?
本文深入探讨了Julia语言中sort和sortslices函数的高级应用,通过实例展示了如何根据自定义条件对矩阵行进行排序,包括按行求和后的升序排列,并对比了sort与sort!的不同之处。

1654

被折叠的 条评论
为什么被折叠?



