当前位置: 移动技术网 > IT编程>开发语言>Java > Scala实现冒泡排序、归并排序和快速排序的示例代码

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

2019年07月19日  | 移动技术网IT编程  | 我要评论

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))
 }

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网