您的位置:首页 > 其它

Scala学习笔记24【List的高效排序】

2015-10-16 13:57 351 查看
package com.yl.Scala

object sortList {
def main(args: Array[String]){

def combineSort[T] (less: (T, T) => Boolean) (input: List[T]): List[T] = {
/**
* @param xList 要合并的有序列表
* @param yList 要合并的有序列表
* @return 合并后的列表
*/
def combine(xList : List[T], yList : List[T]): List[T] = (xList, yList) match{
case(Nil, _) => yList
case(_, Nil) => xList
case(x::xtail, y::ytail) =>
if(less(x, y)) x :: combine(xtail, yList)
else y :: combine(xList, ytail)
}

val n = input.length / 2
if (n == 0) input
else{
val(x, y) = input splitAt n  //将要排序的列表平均分成两部分
combine(combineSort(less)(x), combineSort(less)(y)) //先对两个列表归并排序,然后再将有序表进行归并
}
}
//从小到大排序, x < y
println(combineSort((x: Int, y: Int) => x < y) (List(3,4,2,6,45,5,56,7)))

//从大到小排序, x > y
println(combineSort((x: Int, y: Int) => x > y) (List(3,4,2,6,45,5,56,7)))
}
}


运行结果:

List(2, 3, 4, 5, 6, 7, 45, 56)
List(56, 45, 7, 6, 5, 4, 3, 2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: