Используя scala 2.13, я написал почти идентичное решение как 2-й элемент по следующей ссылке, чтобы получить O(n)
сложность
http://aperiodic.net/phil/scala/s-99/p25.scala
Однако , это не сработало, и это, вероятно, потому, что типы выводятся.
def randomShuffle[A](ls: List[A]): List[A] = {
val rand = new util.Random
val listToArray = ls.toArray
for (i <- listToArray.length-1 to 0 by -1) {
val swapIndex = rand.nextInt(i + 1)
val currentValAtIndex = listToArray(i)
a.update(i, listToArray(swapIndex))
a.update(swapIndex, currentValAtIndex)
}
listToArray .toList
}
Так что будет правильным использованием List.toArray
здесь? Вид застрял на этом ...