daj*_*daj 2 sorting haskell vector
假设我有两个向量:
let x = V.fromList ["foo", "bar", "baz"]
let y = V.fromList [1,3,2]
Run Code Online (Sandbox Code Playgroud)
我想定义一个向量y'
这是排序的版本y
,但我也想定义的重新排序x'
是基于的排序顺序进行排序y
(x'
应该是这样["foo", "baz", "bar"]
).
这样做的最佳功能是什么?理想情况下,我想避免从头开始编写排序函数.
我想你在找 backpermute
Run Code Online (Sandbox Code Playgroud)backpermute :: Vector a -> Vector Int -> Vector a
O(n)产生通过用
i
索引向量替换每个元素而获得的向量xs!i
.这相当于map (xs!)
但通常效率更高.