Scala编程之归并排序
2016-01-25 15:34
309 查看
在排序算法中,归并排序比插入排序的效率更高,下面通过Scala语言实现归并排序。
/** * Created by user on 2016/1/22. */ object MergeSort { def mergeSort[T](less: (T, T) => Boolean)(xs: List[T]): List[T] = { def merge(xs: List[T], ys: List[T]): List[T] = (xs, ys) match { case (Nil, _) => ys case (_, Nil) => xs case (x :: xs1, y :: ys1) => if (less(x, y)) x :: merge(xs1,ys) else y :: merge(xs,ys1) } val n = xs.length / 2 if(n == 0) xs else{ val (ys, zs) = xs.splitAt(n) merge(mergeSort(less)(ys),mergeSort(less)(zs)) } } def main(args: Array[String]) { val flag = (x: Int, y:Int) => x < y val num = List(2, 1, 4, 3, 5, 7, 0) println("Merge Sort: " + mergeSort(flag)(num)) } }
测试结果如下所示:
Merge Sort: List(0, 1, 2, 3, 4, 5, 7)
相关文章推荐
- final--java
- Python with MYSQL - sytax problem
- 编程时间从1970年1月1号0点开始计算的原因
- Asp.Net前台调用后台变量的方法
- Spring 定时器 xml文件配置
- Django学习之路
- ASP与ASP.NET的区别与比较
- c++ 进程_调用其他程序,关闭其他程序
- DWG数据添加到GoogleEarth上显示步…
- ASP.NET网站管理工具无法连接SQL&amp;n…
- C#中DataTable的用法
- Asp.net原理:Asp.net管道&nbsp;(…
- C#&nbsp;指南之装箱与拆箱
- c#+arcgisengine&nbsp;对属性表创…
- Matlab绘制箱线图
- C#&nbsp;DataGridView使用代码
- C#&nbsp;测试代码段性能耗时
- C#“可访问性不一致”问题
- Java并发编程之闭锁CountDownLatch简单介绍
- ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(5)