scala语言实现排序

  • (1)冒泡排序:

    • package cn.itcast.sort

    • //冒泡排序

    • class BubbleSort {

    • def main(args: Array[String]): Unit = {

    • val list = List(3, 12, 43, 23, 7, 1, 2, 0)

    • println(sort(list))

    • }

    • //定义一个方法,传入的参数是要进行排序的List集合,输出的是排序后的List集合

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

    • }

    • }

  • (2) 快速排序

    • package cn.itcast.sort

      • //快速排序

      • object QuickSort {*def main(args: Array[String]): Unit = {*val list = List(3, 12, 43, 23, 7, 1, 2, 0)*println(quickSort(list))**}*//定义一个方法,传入的参数是要进行排序的List集合,输出的是排序后的List集合*def quickSort(list: List[Int]): List[Int] = {*//对输入参数list进行模式匹配*list match {*//如果是空,返回nil*case Nil => Nil*case List() => List()*//不为空从list中提取出首元素和剩余元素组成的列表分别到head和tail中*case head :: tail =>*//对剩余元素列表调用partition方法,这个方法会将列表分为两部分。*// 划分依据接受的参数,这个参数是一个函数(这里是(_ < x))。*// partition方法会对每个元素调用这个函数,根据返回的true,false分成两部分。*// 这里'_ < x'是一个匿名函数(又称lambda),'_'关键字是函数输入参数的占位符,*// 输入参数这里是列表中的每个元素。*val (left, right) = tail.partition(_ < head)*//最后对划分好的两部分递归调用quickSort*//其中head::quickSort(right) 这里::是List定义的一个方法,用于将两部分合成一个列表*quickSort(left) ++ (head :: quickSort(right))

      • }

      • }

      • }

猜你喜欢

转载自blog.csdn.net/Sunshine_2211468152/article/details/83050378