栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Scala实现冒泡排序、归并排序和快速排序的示例代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Scala实现冒泡排序、归并排序和快速排序的示例代码

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, _) => yList
    case (_, Nil) => xList
    case (x :: xTail, y :: yTail) => {
     if (less(x, y)) x :: merged(xTail, yList)
     else
      y :: merged(xList, yTail)
    }
   }
  }

  val n = list.length / 2
  if (n == 0) list
  else {
   val (x, y) = list splitAt n
   merged(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 => Nil
   case 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))
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/137910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号