Scala:Sorting.quickSort的逆序?

时间:2018-02-09 09:31:16

标签: scala sorting

This answer解释了如何在使用内置方法.sortBy时反转排序数组的顺序。使用scala.util.Sorting.quickSort时如何反转排序顺序?

2 个答案:

答案 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是一个具有IntFloatDouble重载的函数,它们不允许您指定排序,而且任何类型的泛型{ {1}}具有[T]个实例。

如果您有一个OrderingIntFloat数组,则重载解析会更喜欢专门版本,因此您无法手动传递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)