F # возвращает индексы сортировки из array.sort - PullRequest
2 голосов
/ 01 марта 2010

Для массива F # есть простой способ вернуть индексы сортировки вместе с отсортированным массивом?

Как и функция sort() от Matlab?

Предыстория: я пришел из matlab / R, где манипулирование массивом по индексам необходимо

Я бы хотел воспроизвести некоторые индексные функции и попытаться передать массив индексов как переменную в различных функциях. для этой функции sort() одним из способов будет сортировка нескольких выровненных массивов по одному из них.

Может быть, есть лучшие способы сделать это?

Ответы [ 2 ]

3 голосов
/ 01 марта 2010

Используйте 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)|]
0 голосов
/ 01 марта 2010
let sortWithIndex list =
    list
    |> List.mapi (fun index x -> (x, index))
    |> List.sort

(В зависимости от версии F # для List.sort может потребоваться функция сравнения, такая как `сравнение).

...