ruby如何获得排序的序号argsort

我想请问下,ruby如何获得排序的序号argsort
最新回答
梦明

2024-09-30 03:53:25

以后有问题可以去 stackoverflow上面搜。这里有个

,与你的类似。

xs = [1, 3, 2, 4]
original_indexes = xs.map.with_index.sort.map(&:last)
#=> [0, 2, 1, 3]

我解释下:

1)with_index  之后产生一个 二维数组的迭代器 [ [xs[0], 0], [xs[1], 1], [xs[2], 2] ... ]

2)sort 函数应用在二维数组中时,似乎是按照第一个元素进行排序

3)排序之后的二维数组,取出每个数组的last就是索引值,由于这时候已经排过序,所以就是希望的答案了。