我正在尝试 Scala,我想看看如何在 scala 中实现插入排序,并满足以下要求:
- 嵌套 for 循环
- 输入数组[Int]
- 如果可能的话,通过引用方式修改函数内容的方法,否则返回 Array[Int]
如果这不是实现插入排序的 Scala 方法,您仍然可以提供上述代码并解释该方法的问题所在。
编辑:
这是使用 while 循环的尝试(确实有效),不,这不是一个家庭作业问题,为什么有敌意?
def insert_sort(a:Array[Int]):Array[Int]={
for(i <- 0 until a.length)
{
var j=i+1
while(j>1&&a(j)<a(j-1)&&j<a.length)
{
var c=a(j)
a(j)=a(j-1)
a(j-1)=c
j-=1
}
}
return a
}
这就是我想出的,它似乎是函数式的、通用的、尾递归的(foldLeft
是尾递归)...:
def insertionSort[A](la: List[A])(implicit ord: Ordering[A]): List[A] = {
def insert(la: List[A], a: A) = {
val (h, t) = la.span(ord.lt(_, a))
h ::: (a :: t)
}
la.foldLeft(List[A]()) {(acc, a) => insert(acc, a)}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)