Scala 小程序记录(学习期间的代码片段)

原创
2016/03/21 23:30
阅读数 95
/***
 * 2016-03-21
 * 输出 99 乘法表 
**/
object main {
  def main(args:Array[String]) : Unit = {
    for (i <- 1 to 9; j <- 1 to i)
      print(s"$j*$i=${i * j} ${if(i==j)"\n" else ""}")
  }
}
/*****
 * 2016-03-28
 * 归并排序
 */

   def mergedSort[T](less : (T,T)=>Boolean)(input:List[T]) :List[T] = {
      def merge (xList:List[T], yList:List[T]) : List[T] = {
        println(xList + "  " + yList)
        (xList, yList) match {
          case (Nil, _) => yList
          case (_, Nil) => xList
          case (x::xtail, y::ytail) =>
            if (less(x, y)) x::merge(xtail, yList)
            else y::merge(xList, ytail)
        }
      }

      val n = input.length / 2
      if (n == 0) input
      else {
        val(x, y)= input splitAt n
        merge(mergedSort(less)(x), mergedSort(less)(y))
      }
    }

/*
 * 2016-03-29
 * List 问题
 */

class List[T] {
 //经过测试,partition函数是根据pre函数运算,每个元素返回true/false然后生成两个新的List
    def partition(pre: T=>Boolean) : (List[T],List[T]) 
// 但是还有一个类似的函数,暂时不知道是实现了什么
    def span(pre:T=>Boolean):(List[T], List[T])
}


展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部