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

      • }

      • }

      • }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章