Julia程序设计3 数组2 排序、复制、集合运算、字典
排序
1、Julia中数组排序最基础的函数是sort,它默认是从小到大排序,如果加上rev = true就是从大到小:
julia> a = [2,6,3,4,1,7,8,5]
8-element Array{
Int64,1}:
2
6
3
4
1
7
8
5
julia> sort(a)
8-element Array{
Int64,1}:
1
2
3
4
5
6
7
8
julia> sort(a, rev = true)
8-element Array{
Int64,1}:
8
7
6
5
4
3
2
1
2、用sortperm()可以返回按从小打到排列的元素的指标,比如a中1在第5位,2在第一位,那么sortperm就会返回5,1,。。。
julia> I = sortperm(a)
8-element Array{
Int64,1}:
5
1
3
4
8
2
6
7
julia> a[I] # 将a中的元素按I的顺序还原
8-element Array{
Int64,1}:
1
2
3
4
5
6
7
8
3、sort中加上by = abs可以按绝对值从小到大排序,by = 和rev = 可以一起用;事实上 by = 可以接任何实值函数,比如 by = sin,by = exp或者自定义函数
julia> b = [9,-3,0,4,-5]
5-element Array{
Int64,1}:
9
-3
0
4
-5
julia> sort(b, by = abs)
5-element Array{
Int64,1}:
0
-3
4
-5
9
julia> sort(b, by = abs, rev = true)
5-element Array{
Int64,1}:
9
-5
4
-3
0
julia> sort(b, by = sin)
5-element Array{
Int64,1}:
4
-3
0
9
-5
4、多维数组排序需要指定维数:
julia> A = [[1,4,3] [2,6,8] [4,4,7]]
3×3 Array{
Int64,2}:
1 2 4
4 6 4
3 8 7
julia> sort(A, dims = 1