0

我正在尝试在 scala 中实现惯用的就地快速排序。为此,我正在递归视图而不是(左,右)索引对。但是,我遇到了从视图中获取视图的问题。

Array(1, 2).view => IndexedSeqView[Int, Array[Int]]
Array(1, 2).view.view => IndexedSeqView[Int, IndexedSeqView[Int, Array[Int]]]

等等。这使我无法递归地划分某些基本数组的视图的视图,因为我的递归函数不知道期望什么类型。有没有办法让 IndexedSeqView[Int, Array[Int]] 的视图也是 IndexedSeqView[Int, Array[Int]] 的视图?

4

2 回答 2

2

mutable.IndexedSeqView有许多返回其他视图的函数。对于您的情况,我假设splitAt是您想要的。

尝试在 s 中进行整个 scala 快速排序处理,IndexedSeqView然后为排序Arrays 提供方便的包装器。

于 2013-08-12T15:31:52.793 回答
0

通过替换,我能够使我的函数在一系列 Ints 的任何视图上工作

def quickSort(arr: IndexedSeqView[Int, Array[Int]) 

def quickSort(arr: IndexedSeqView[Int, _]). 

但我更喜欢函数映射

IndexedSeqView[A, C[A]]

到一些子视图

IndexedSeqView[A, C[A]]

如果存在这样的功能

于 2013-08-12T15:13:31.067 回答