Julia: 关于Array排序函数sortslices

对于排序,我们知道,有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,针对出现的“自然排”,有没有进行二次排序的可能?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值