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