F#从array.sort返回排序索引

时间:2010-03-01 18:36:39

标签: f# functional-programming

对于F#数组,是否有一种简单的方法可以将排序索引与排序数组一起返回?

与Matlab的sort()函数一样?

背景:我来自matlab / R,其中操作索引上的数组是必不可少的。

我想重现一些索引函数,并尝试将各种函数中的索引数组作为变量传递。对于这个sort()函数,一种用法是根据它们中的任何一个对几个对齐的数组进行排序。

也许还有更好的方法可以做到这一点?

2 个答案:

答案 0 :(得分:3)

将Array.sort与Array.mapi结合使用。

let arr = [| 14;3;11;2 |]
let sortedWithIndex = arr |> Array.mapi (fun x t -> (t,x)) |> Array.sort 
printfn "%A" sortedWithIndex

输出

[|(2, 3); (3, 1); (11, 2); (14, 0)|]

答案 1 :(得分:0)

let sortWithIndex list =
    list
    |> List.mapi (fun index x -> (x, index))
    |> List.sort

(根据F#的版本,List.sort可能需要比较函数,如`compare)。