Scala 数组的区间中的数字的索引

Scala the index of a number in which interval of an array

假设我有一个 (0, 0.1, 0.2, ..., 1) 数组和一个数字 0.15,我希望得到它的索引。由于0.15 > 0.10.15 < 0.2,它在区间2。有没有最先进的方法来做到这一点?目前我使用带有 var 变量的 for 循环并遍历每个间隔,但我认为这不是最好的方法。

假设数组已排序,您可以尝试:

arr.indexWhere(_ >= 0.15) - 1

如果没有这样的实例你会得到 - 2.

假设你的数组元素是按升序排列的,你可以定义一个简单的函数来将插入的元素组成一个数组,如下所示:

def insert(a: Array[Double], x: Double): Array[Double] = {
  val i = a.indexWhere(_ >= x)
  if (i >= 0) a.take(i) ++ Array(x) ++ a.drop(i) else a ++ Array(x)
}

val a = Array(0.0, 0.1, 0.2, 0.3, 0.4, 0.5)

insert(a, 1.5)
res1: Array[Double] = Array(0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 1.5)

insert(a, 3)
res2: Array[Double] = Array(0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 3.0)

insert(a, -0.1)
res3: Array[Double] = Array(-0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5)