# scala实现归并排序

object MergedSort {
def main(args: Array[String]) {
def mergeSort[T] (less: (T, T) => Boolean) (input: List[T]): List[T] ={
/**
* @param xList 要合并的有序序列
* @param yList 要和并的有序序列
* @return 合并后的序列
*/
def merge(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 :: merge(xtail, yList)
else y :: merge(xList, ytail)
}
val n = input.length / 2
if (n == 0) input
else {
val (x, y) = input splitAt n        //把要排序的input均分成两个列表
merge(mergeSort(less)(x), mergeSort(less)(y))   //先对分后的两个列表进行归并排序,在对排序好的有序列表进行归并
}

println(mergeSort((x: Int, y: Int) => x < y)(List(3, 7, 9, 5)))
val reversed_mergedsort = mergeSort((x: Int, y: Int) => x > y) _
println(reversed_mergedsort(List(3,7,9,5)))
}
}
}

#### Scala实现冒泡排序、归并排序和快速排序

2015-07-04 21:36:15

#### Scala数组归并排序

2016-06-06 17:49:26

#### 归并排序,scala实现

2016-09-29 20:28:25

#### Scala练习-归并排序

2017-06-27 21:08:00

#### Scala插入排序、归并排序、快速排序

2016-07-07 21:42:17

#### scala 排序算法 归并排序

2017-02-25 01:20:23

#### 【scala 数据结构和算法】Scala实现：归并排序

2017-12-19 15:36:20

#### 用scala语言实现并行堆排序(top k)

2015-09-25 12:27:04

#### scala数据结构和算法-01-用scala实现合并排序

2016-12-30 21:20:47

#### scala 实现自定义排序算法

2016-03-03 15:29:35