Tôi đã được chơi đùa với Scala thời gian gần đây và đã suy nghĩ về làm thế nào để thực hiện một phiên bản generic của quicksort trong nó (chỉ để có được một cảm giác tốt hơn cho ngôn ngữ)Một quicksort chung trong Scala
tôi đã đưa ra một cái gì đó như thế này
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))
}
}
Đây không phải là chung chung kiểu như tôi muốn nó được, vì tôi phải nói rõ làm thế nào để đặt hàng các yếu tố chứ không phải sau đó chỉ cần làm một cái gì đó giống như
val (l, g) = a drop 1 partition (a(0) >)
Làm thế nào tôi có thể nói với trình biên dịch rằng T chỉ cần thực hiện toán tử lớn hơn để có thể sắp xếp theo hàm này?
Trân
Cảm ơn rất nhiều! Câu trả lời tuyệt vời :) – raichoo
Không sao cả. Hãy xem qs impl trên wikipedia cũng. Có lẽ bạn thấy rằng một cái tốt hơn và trực quan hơn tôi;) – Schildmeijer