sorting - 如何根据 haskell 中另一个向量的排序顺序对向量值进行重新排序?

标签 sorting haskell vector

假设我有两个向量:

  let x = V.fromList ["foo", "bar", "baz"]
  let y = V.fromList [1,3,2]

我想定义一个向量 y',它是 y 的排序版本,但我还想定义一个重新排序的 x'它是根据 y 的排序顺序排序的(x' 应该看起来像 ["foo", "baz", "bar"] ).

最好的功能是什么?理想情况下,我想避免从头开始编写排序函数。

最佳答案

我想你在找backpermute

backpermute :: Vector a -> Vector Int -> Vector a

O(n) Yield the vector obtained by replacing each element i of the index vector by xs!i. This is equivalent to map (xs!) is but is often much more efficient.

关于sorting - 如何根据 haskell 中另一个向量的排序顺序对向量值进行重新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37682168/

相关文章:

c++ - 从 vector 主数组创建子数组的困惑

haskell - 堆栈: How can I use a multi-package dependency in `Setup.hs` ?

Haskell 中的列表 : data type or abstract data type?

haskell - 递归行优先的矩阵乘法

MySQL:在 alpha 排序中将记录放在最后

java - Android-java-如何按对象内的某个值对对象列表进行排序

c++ - 如何使用 C++ 将数组按字母顺序排序为新数组?

arrays - 具有 O(n) 次反转的数组

haskell |如何从深度嵌套的数据结构中获取值?

r - 在str_remove : Combine a pattern with a regex in one line中