Scala實(shí)現(xiàn)冒泡排序、歸并排序和快速排序的示例代碼
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))
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用RedisTemplate如何根據(jù)前綴獲取key列表
這篇文章主要介紹了Java使用RedisTemplate如何根據(jù)前綴獲取key列表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Java過(guò)濾器filter_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java過(guò)濾器filter,通過(guò)過(guò)濾器,可以對(duì)來(lái)自客戶端的請(qǐng)求進(jìn)行攔截,進(jìn)行預(yù)處理或者對(duì)最終響應(yīng)給客戶端的數(shù)據(jù)進(jìn)行處理后再輸出2017-07-07
Simple Java Mail郵件發(fā)送實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Simple Java Mail郵件發(fā)送實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Java AbstractMethodError原因案例詳解
這篇文章主要介紹了Java AbstractMethodError原因案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
springboot解決Class path contains multiple 
這篇文章主要介紹了springboot解決Class path contains multiple SLF4J bindings問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
Servlet實(shí)現(xiàn)統(tǒng)計(jì)頁(yè)面訪問(wèn)次數(shù)功能
這篇文章主要介紹了Servlet實(shí)現(xiàn)統(tǒng)計(jì)頁(yè)面訪問(wèn)次數(shù)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
在?Java?中將Object?轉(zhuǎn)換為?Int的四種方法
這篇文章主要介紹了在Java中如何將?Object?轉(zhuǎn)換為Int,本文研究了在?Java中將Object轉(zhuǎn)換為int的四種不同方法,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
SpringCloud微服務(wù)剔除下線功能實(shí)現(xiàn)原理分析
SpringCloud是一種微服務(wù)的框架,利用它我們可以去做分布式服務(wù)開發(fā),這篇文章主要介紹了SpringCloud微服務(wù)剔除下線功能,需要的朋友可以參考下2022-11-11

