def sort(L: List[Int]): List[Int] = L match {
case Nil => Nil
case base::tail =>
val (left, right) = tail.partition(_ < base)
sort(left):::base::sort(right)
}
sort(List(3, 6, 1, 0, -1)).foreach(println)
def sort(A: Array[Int]) {
if(A.length > 1){
val p = A.take(A.length/2)
val q = A.takeRight(A.length - A.length/2)
sort(p); sort(q)
var i = 0; var j = 0
while(i < p.length && j < q.length){
if (p(i) < q(j)) {A(i+j) = p(i); i += 1}
else {A(i+j) = q(j); j += 1}
}
while(i < p.length) {A(i+j) = p(i); i += 1}
while(j < q.length) {A(i+j) = q(j); j += 1}
}
}
val A = Array[Int](4, 1, 6, 7, 0, 2)
sort(A)
println(A.mkString(", "))scala 快速排序与合并排序
最新推荐文章于 2020-07-14 20:15:57 发布
本文介绍了两种不同的排序算法实现:一种是递归方式的快速排序,应用于列表;另一种是归并排序的变种,应用于数组,并通过原地排序进行优化。
477

被折叠的 条评论
为什么被折叠?



