在Scala中查找数组中前n个元素的索引

在Scala中查找数组中前n个元素的索引,scala,Scala,我有一个无序数组[Int]。如何从中找到前n个元素的索引 比如说 Input: Array[Int] = Array(1,4,2,8,5,3,1,4,2) top_n = 3 Output: 1,4,5 我想你是在问3个最高数字的指数? 您可以使用以下内容: arr.zipWithIndex.sortBy(_._1).takeRight(3).map(_._2) 我想你是在问3个最高数字的指数? 您可以使用以下内容: arr.zipWithIndex.sortBy(_._1).takeRi

我有一个无序数组[Int]。如何从中找到前n个元素的索引

比如说

Input:
Array[Int] = Array(1,4,2,8,5,3,1,4,2)
top_n = 3

Output:
1,4,5

我想你是在问3个最高数字的指数? 您可以使用以下内容:

arr.zipWithIndex.sortBy(_._1).takeRight(3).map(_._2)

我想你是在问3个最高数字的指数? 您可以使用以下内容:

arr.zipWithIndex.sortBy(_._1).takeRight(3).map(_._2)

我猜您描述的输出是错误的,所以我想这里应该是(1,3,4)。下面是一个使用zipWithIndex的sraightforward解决方案

val values = Array(1,4,2,8,5,3,1,4,2)
val n = 3
values.zipWithIndex.sortBy(-_._1).take(n).map(_._2)
返回

res2: Array[Int] = Array(3, 4, 1)

我猜您描述的输出是错误的,所以我想这里应该是(1,3,4)。下面是一个使用zipWithIndex的sraightforward解决方案

val values = Array(1,4,2,8,5,3,1,4,2)
val n = 3
values.zipWithIndex.sortBy(-_._1).take(n).map(_._2)
返回

res2: Array[Int] = Array(3, 4, 1)

你如何确定前n名?逻辑是什么?你是如何确定top n的?逻辑是什么?