快速排序
思想
快速排序使用分治的思想,选定一个基准点,通过一趟排序将待排序的序列分为左右两个部分,其中左边的部分都比基准点要小,右边的基准点都比基准点要大,之后在分别对左右两边的部分,按照相同的思想继续切分,最终达到一个有序队列的目的
复杂度
时间复杂度:O(nlog(n))
空间复杂度:O(log(n))
scala代码实现
def quickSort(list: List[Int]): List[Int] = {
list match {
case Nil => Nil
case List() => List()
case (head :: tail) => {
val (l, r) = tail.partition(_ < head)
quickSort(l) ::: head :: quickSort(r)
}
}
}
归并排序
思想
归并排序就是将两个无序的列表合并一个有序列表,通过不断的切分列表知道剩下一个元素,在进行合并,最终形成有序列表
复杂度
时间复杂度:O(nlog(n))
空间复杂度:O(n)
scala代码实现
def mergedSort[T](less:(T,T)=>Boolean)