【发布时间】:2023-03-30 09:15:01
【问题描述】:
我需要帮助填写一些空白,以便分区在调用分区(数据、下层、上层)时起作用。虽然,我认为 if 语句应该是 if (lower
object Quicksort {
def partition[A](data: Array[A], lower: Int, upper: Int)
(implicit comp: Ordering[A]): Int = {
val pivot = data(upper-1)
var mid = lower-1
for (i <- lower until upper-1) {
if (comp.lteq(data(i),pivot)) {
mid += 1
swap(data,mid,i)
}
}
swap(data,mid+1,upper-1)
mid+1
}
def sort[A](data: Array[A])(...): Unit = {
def sortRange(data: Array[A], lower: Int, upper: Int):
Unit = {
if(lower < upper) {
val pivotIndex = partition(data,lower,upper)
sortRange(data,lower,pivotIndex)
sortRange(data,pivotIndex+1,upper)
}
}
sortRange(data,0,data.length)
}
def main(args: Array[String]) : Unit = {
//Result of partition(data,lower,upper):
//sortRange results in quick-sorting the range: [lower,upper)
}
}
【问题讨论】:
-
你试过什么?你了解隐式和类型参数/泛型的概念吗?
-
@mchaJIS 我相信implicits对数据强加了一个排序(整数小于这个意义上的整数)并且类型参数/泛型(例如类型A)可以在实例化时间