gpt4 book ai didi

algorithm - Scala 中的通用快速排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:31:25 24 4
gpt4 key购买 nike

我最近一直在研究 Scala,并在考虑如何在其中实现一个通用版本的快速排序(只是为了更好地感受这门语言)

我想到了这样的东西

object Main {
def qs[T](a: List[T], f: (T, T) => Boolean): List[T] = {
if (a == Nil) return a
val (l, g) = a drop 1 partition (f(a(0),(_:T)))
qs(l, f) ::: List(a(0)) ::: qs(g, f)
}

def main(args: Array[String]): Unit = {
val a = List(5,3,2,1,7,8,9,4,6)
val qsInt = qs(_: List[Int], (_: Int) > (_: Int))
println(qsInt(a))
}

}

这并不像我想要的那样通用,因为我必须明确说明如何对元素进行排序,而不是仅仅做类似的事情

val (l, g) = a drop 1 partition (a(0) >)

我怎样才能告诉编译器 T 只需要实现大于运算符就可以被这个函数排序?

问候

最佳答案

def qsort[T <% Ordered[T]](list: List[T]): List[T] = {
list match {
case Nil => Nil
case x::xs =>
val (before, after) = xs partition (_ < x)
qsort(before) ++ (x :: qsort(after))
}
}

关于algorithm - Scala 中的通用快速排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com