This answer解释了如何在使用内置方法.sortBy
时反转排序数组的顺序。使用scala.util.Sorting.quickSort
时如何反转排序顺序?
答案 0 :(得分:3)
像这样:
import scala.util.Sorting.quickSort
val a = Array(1, 2, 3)
quickSort[Int](a)(Ordering[Int].reverse)
// ^---^ the most important bit
println(a.toVector) // Vector(3, 2, 1)
quickSort
是一个具有Int
,Float
和Double
重载的函数,它们不允许您指定排序,而且任何类型的泛型{ {1}}具有[T]
个实例。
如果您有一个Ordering
,Int
或Float
数组,则重载解析会更喜欢专门版本,因此您无法手动传递Double
,除非您指定一个类型参数(所以编译器现在只有一个选项)。
对于除这三种类型之外的其他数组(例如Ordering
s),您可以省略type参数,因为只有一个有效选项:
Long
答案 1 :(得分:1)
如果您查找quickSort
的类型签名,您应该找到:
def quickSort[K](a: Array[K])(implicit arg0: math.Ordering[K]): Unit
显然,这意味着您可以通过实现隐式Ordering[K]
(或传入一个)来自定义行为。
示例:
val a = Array(3, 4, 2, 3)
quickSort[Int](a)(Ordering.Int.reverse)