@amoszhou
2014-05-06T06:27:25.000000Z
字数 1456
阅读 1272
scala课后习题
def randomArray(n:Int)={
val a = new Array[Int](n)
for(i <- 0 until a.length){
a(i) = new Random().nextInt(n)
}
a
}
def randomArray(n:Int)={
(for(i <- 0 until n ) yield new Random().nextInt(n)).toArray
}
//2.交换相邻位置的元素
def exchange(arr : Array[Int])={
for(i <- 0 until (arr.length-1,2)) {
val temp = arr(i)
arr(i) = arr(i+1)
arr(i+1) = temp
}
arr
}
这题有人说先转成ArrayBuffer,再调用remove
和insert
这2个API完成,但是数组中间进行删除和插入效率并不高,不如直接索引找到值,进行修改。当然最爽的做法是直接arr
。当然这个题最好的做法就是用函数arr.grouped(2).reverse
def exchangeWithNewArray(arr:Array[Int])={
(for(i <- 0 until arr.length) yield {
if(i%2 != 0){
arr(i-1)
}else{
if(i+1 ==arr.length){
arr(i)
}else {
arr(i + 1)
}
}
}).toArray
}
def exchangeWithNewArray2(arr:Array[Int])={
(for(i<-0 until arr.length by 2; j<- i+1 to i by -1 if j<arr.length) yield arr(j)).toArray
}
随机数组,我们之前已经做过了,这里就不在做了,我们直接看下怎么排序
def randomSortedArray(arr:Array[Int])={
Array.concat(arr.filter(_>0),arr.filter(_<=0))
}
def aveArray(arr:Array[Double]):Double={
arr.sum/arr.length
}
def reverseArray(arr:Array[Int]):Array[Int]={
arr.reverse
}
ArrayBuffer也可以同样处理
def distinctArray(arr:Array[Int]):Array[Int]={
arr.distinct
}
直接for...if..yield