首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala: Sorting.quickSort的逆序?

Scala: Sorting.quickSort的逆序?
EN

Stack Overflow用户
提问于 2018-02-09 17:31:16
回答 2查看 711关注 0票数 0

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-09 17:46:02

如下所示:

代码语言:javascript
复制
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重载的函数,这些重载不允许您指定顺序,并且是具有Ordering实例的任何类型[T]的泛型重载。

如果您有一个由IntFloatDouble组成的数组,则重载解析将首选专用版本,因此您将无法手动传递Ordering,除非您指定一个类型参数(因此编译器现在只有一个选择)。

对于这三种类型以外的数组(例如Long),您可以省略类型参数,因为只有一个有效选项:

代码语言:javascript
复制
val b = Array(1L, 2L, 3L)
quickSort(b)(Ordering[Long].reverse)
println(b.toVector) // Vector(3, 2, 1)
票数 4
EN

Stack Overflow用户

发布于 2018-02-09 17:39:57

如果你查找quickSort的类型签名,你会发现:

代码语言:javascript
复制
def quickSort[K](a: Array[K])(implicit arg0: math.Ordering[K]): Unit

显然,这意味着您可以通过实现一个隐式Ordering[K] (或传入一个)来自定义行为。

示例:

代码语言:javascript
复制
val a = Array(3, 4, 2, 3)
quickSort[Int](a)(Ordering.Int.reverse)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48702675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档