冒泡排序详解
原理
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
算法步骤
- 从第一个元素开始比较相邻的元素,如果第一个比第二个大,就交换.
- 对每一对相邻的元素重复比较,这样将会使最大的元素沉底—数组的末尾.
- 对第二个元素开始重复上述的过程,直到没有任何一对数字需要比较.
- 时间复杂度O(n 2),是一个稳定的算法.
- 稳定性:排序后 2 个相等键值的相对顺序和排序之前它们的相对顺序相同.
- 动图演示.
代码实现
package cn.myname.sort
object BubbleSort {
def main(args: Array[String]): Unit = {
//定义一个待排序的数组
val list = List(3,28,5,34,2,33,4,1)
println(sort(list))
}
def sort(list:List[Int]):List[Int] = {
list match {
//判断数组是否为空,为空直接返回Nil
case Nil=>Nil
//不为空就直接将首元素赋给head,剩余列表赋给tail.
case head::tail => compute(head,sort(t