import java.util.Scanner def swap[T](i: Int, j: Int, A: Array[T]) = {val t = A(i); A(i) = A(j); A(j) = t} def factor[T](A: Array[T], leap: Int) { if(leap < A.length){ for(i <- leap until A.length){ swap[T](leap, i, A) factor(A, leap+1) swap[T](leap, i, A) } }else{ println(A.mkString(", ")) } } var flag: Boolean = true val sc = new Scanner(System.in); while(flag){ val A = new Array[Int](sc.nextInt) for(i <- 0 until A.length) A(i) = i + 1 if(A.length == 0) flag = false else factor[Int](A, 0) }
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 完成全排列和归并排序
最新推荐文章于 2021-09-01 21:12:44 发布