lse*_*ohn 0 arrays sorting scala
我有一个数组,或者Seq看起来像
val myArray = collection.mutable.ArrayBuffer[Int](1,4,8,10,12,13)
val newElem = 7
Run Code Online (Sandbox Code Playgroud)
我想将新元素插入到Array中的正确位置,以便仍然对数组进行排序。
我不想在这里生成一个新数组。
我的解决方案是先找到插入位置,然后再插入。
def findInsertPosition(myArray: collection.multable.ArrayBuffer[Int], newElem: Int): Int
Run Code Online (Sandbox Code Playgroud)
然后打电话
myArray.insert(pos, newElem)
Run Code Online (Sandbox Code Playgroud)
问题是如何以findInsertPositionScala样式编写函数,而不使用while,for循环?
还是您有更好的解决方案?
找到的插入位置,lastIndexWhere然后insert在该位置添加一个。
scala> val xs = scala.collection.mutable.ArrayBuffer(1,4,8,10,12,13)
xs: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 4, 8, 10, 12, 13)
scala> xs.insert(xs.lastIndexWhere(_ < 7) + 1, 7)
scala> xs
res10: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 4, 7, 8, 10, 12, 13)
Run Code Online (Sandbox Code Playgroud)