@amoszhou
2014-05-06T06:27:25.000000Z
字数 1456
阅读 1415
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