1、冒泡排序

def sort(list: List[Int]): List[Int] = list match {case List() => List()case head :: tail => compute(head, sort(tail))}def compute(data: Int, dataSet: List[Int]): List[Int] = dataSet match {case List() => List(data)case head :: tail => if (data <= head) data :: dataSet else head :: compute(data, tail)}def main(args: Array[String]) {val list = List(3, 12, 43, 23, 7, 1, 2, 0)println(sort(list))}

2、归并排序

def mergedSort[T](less: (T, T) => Boolean)(list: List[T]): List[T] = {def merged(xList: List[T], yList: List[T]): List[T] = {(xList, yList) match {case (Nil, _) => yListcase (_, Nil) => xListcase (x :: xTail, y :: yTail) => {if (less(x, y)) x :: merged(xTail, yList)elsey :: merged(xList, yTail)}}}val n = list.length / 2if (n == 0) listelse {val (x, y) = list splitAt nmerged(mergedSort(less)(x), mergedSort(less)(y))}}def main(args: Array[String]) {val list = List(3, 12, 43, 23, 7, 1, 2, 0)println(mergedSort((x: Int, y: Int) => x < y)(list))}

3、快速排序

  def quickSort(list: List[Int]): List[Int] = {list match {case Nil => Nilcase List() => List()case head :: tail =>val (left, right) = tail.partition(_ < head)quickSort(left) ::: head :: quickSort(right)}}def main(args: Array[String]) {val list = List(3, 12, 43, 23, 7, 1, 2, 0)println(quickSort(list))}

未完成,待整理

转载于:https://www.cnblogs.com/jchubby/p/5449380.html

Scala实现冒泡排序、归并排序和快速排序相关推荐

  1. 排序算法--(冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序)

    一.时间复杂度分析 - **时间复杂度**:对排序数据的总的操作次数.反应当n变化时,操作次数呈现什么规律 - **空间复杂度**:算法在计算机内执行时所需要的存储空间的容量,它也是数据规模n的函数. ...

  2. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  3. 八大排序:冒泡排序、插入排序、希尔排序、选择排序、堆排序、归并排序、快速排序、基数排序

    [前言] 所有代码段都以升序为例,数组下标从0开始.排序的稳定性即:任意两个相等的数据,排序前后的相对位置不发生变化. [冒泡排序(Bubble Sort)] 它重复地访问过要排序的元素序列,依次比较 ...

  4. 排序算法中——归并排序和快速排序

    冒泡排序.插入排序.选择排序这三种算法的时间复杂度都为 $O(n^2)$,只适合小规模的数据.今天,我们来认识两种时间复杂度为 $O(nlogn)$ 的排序算法--归并排序(Merge Sort)和快 ...

  5. 排序算法:归并排序、快速排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.归并排序: 1.工作原理: 归 ...

  6. 归并排序,快速排序为什么快

    对于一个 n n n个元素的数组,必须要确定两两之间的相对顺序,假设每次都抓取不同的二元组,需要 log ⁡ 2 n ! \log_2n! log2​n!次比较,由于 log ⁡ 2 n ! ≈ n ...

  7. 排序算法之——归并排序和快速排序

    冒泡排序.插入排序.选择排序这三种算法的时间复杂度都为 O ( n 2 ) O(n^2) O(n2),只适合小规模的数据.今天,我们来认识两种时间复杂度为 O ( n l o g n ) O(nlog ...

  8. 常见排序算法原理及实现——第二部分(归并排序、快速排序、堆排序)

    引言 排序算法第一部分,我们聊了冒泡排序.插入排序.选择排序这三种排序算法,它们的时间复杂度比较高,都是 O(n2),适合小规模数据的排序.今天,我们来看三种时间复杂度为 O(nlogn) 的排序算法 ...

  9. 归并排序、快速排序和堆排序及C代码

    排序 1.归并排序 1.1归并排序的概念 1.2算法步骤 1.3代码示例 2.快速排序 2.1快速排序的概念 2.2算法步骤 2.3代码示例 3.堆排序 3.1堆排序的概念 3.2算法步骤 3.3代码 ...

  10. 算法与数据结构全阶班-左程云版(二)基础阶段之3.归并排序和快速排序

    文章目录 前言 1.归并排序 2.快速排序 总结 前言 本文主要介绍了两种排序,归并排序和快速排序,归并排序有递归和非递归2种方式实现,快速排序的升级版为荷兰国旗问题. 1.归并排序 归并排序: 1) ...

最新文章

  1. 了解黑客的关键工具---揭开Shellcode的神秘面纱
  2. jupyter代码字体大小_你可能并不知道这样定制炫酷的jupyter主题
  3. MySQL-MMM架构部署(有图)
  4. java code viewer_Java CodeView类代码示例
  5. Solr学习笔记——查询
  6. 【ZJOF】用来个栈来实现一个队列
  7. 【LCT】【树状数组】Matches Are Not a Child‘s Play(luogu CF1137F)
  8. 信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树
  9. 谷歌方法 pdf txt azw3 epub mobi 百度云盘网盘下载
  10. 「技术架构」TOGAF建模:环境和位置图
  11. Java 设计模式 本文代码拉取链接 https://gitlab.com/zhangpengweiLJ/designpettern.git
  12. 苹果收购公司,为什么总是低调而高效---转自百度新闻|DTCHAT
  13. java 字符串加密_如何用JAVA实现字符串简单加密解密?
  14. 各项异性扩散(Anisotropic diffusion)--算法简介(python)代码实现
  15. mysql workbench6.3.7_mysql workbench官方版
  16. jstl标签c:choose,c:when,c:otherwise用法
  17. 塑壳断路器的机械原理
  18. 网上找到一个可以用来测试网站安全性能的测试ASP页面
  19. CAN通信波特率与每秒收发帧数
  20. Microsoft SQL Server--导入excel数据

热门文章

  1. MongoDB集群——副本集
  2. ASP.NET母版页和内容页之间如何互相传值?
  3. iOS6兼容之前版本的旋屏总结
  4. [转] Asp.net mvc 3 beta 新特性介绍
  5. linux 文本排序、合并和分割 -转
  6. 通用Makefile模板
  7. python典型应用场景、domo及模板之一-----------配置日志
  8. 分布式时序数据库InfluxDB
  9. Swift NSDate的一个分类,把Mon Apr 04 19:45:37 +0800 2016这种格式的时间转换为2016-04-04 11:45:37 +0000
  10. Shadow Map 原理和改进 【转】