如果我有兩個陣列:
a = [ 1, 4, 3, 2]
b = ['z', 'w', 'x', 'y']
我想對兩者進行排序,a并b基于來自 的值a,即:
[ 1, 2, 3, 4] # a
['z','y','x','w'] # b
什么是有效/慣用的方法來做到這一點?
uj5u.com熱心網友回復:
使用兩個不同的向量,我不知道這是否可能。
我會使用sortperm回傳一個排列向量p,該向量a[p]按排序順序排列
julia> p=sortperm(a)
4-element Vector{Int64}:
1
4
3
2
julia> a[p]
4-element Vector{Int64}:
1
2
3
4
julia> b[p]
4-element Vector{Char}:
'z': ASCII/Unicode U 007A (category Ll: Letter, lowercase)
'y': ASCII/Unicode U 0079 (category Ll: Letter, lowercase)
'x': ASCII/Unicode U 0078 (category Ll: Letter, lowercase)
'w': ASCII/Unicode U 0077 (category Ll: Letter, lowercase)
如果性能很重要,您還可以使用sortperm!它允許使用預分配的排列向量p。
注意:如果你有一個矩陣,你可以使用sortslices
julia> M=hcat(a,b)
4×2 Matrix{Any}:
1 'z'
4 'w'
3 'x'
2 'y'
julia> sortslices(M,dims=1,by=x->x[1])
4×2 Matrix{Any}:
1 'z'
2 'y'
3 'x'
4 'w'
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/488999.html
上一篇:二叉搜索樹-洗掉
