我有
a = ["B", "C", "A"]
Run Code Online (Sandbox Code Playgroud)
和
b = [7, 10, 5]
Run Code Online (Sandbox Code Playgroud)
如何a
按元素的顺序排序b
?
因此,解释一下,中元素的顺序b
是已排序元素的索引 ( [3,1,2]
)。我想用它来做到这一点:
a[[3,1,2]]
["A", "B", "C"]
Run Code Online (Sandbox Code Playgroud)
您正在寻找sortperm
:
sortperm(v; alg::Algorithm=DEFAULT_UNSTABLE, lt=isless, by=identity, rev::Bool=false, order::Ordering=Forward)
返回一个置换矢量
I
这使v[I]
按排序顺序。使用与 相同的关键字指定顺序sort!
。即使排序算法不稳定,置换也能保证稳定,这意味着相等元素的索引以升序出现。
应用于您的示例:
julia> a = ["B", "C", "A"]
3-element Array{String,1}:
"B"
"C"
"A"
julia> b = [7, 10, 5]
3-element Array{Int64,1}:
7
10
5
julia> perm = sortperm(b)
3-element Array{Int64,1}:
3
1
2
julia> a[perm]
3-element Array{String,1}:
"A"
"B"
"C"
Run Code Online (Sandbox Code Playgroud)