scala实现快排,归并,冒泡,二分查找

这篇博客详细介绍了四种经典算法在Scala中的实现:快速排序、归并排序、冒泡排序和二分查找。快速排序和归并排序的时间复杂度为O(nlog(n)),冒泡排序为O(n^2),而二分查找的时间复杂度为O(log2n)。对于每种算法,文章都阐述了其核心思想,并提供了相应的Scala代码示例。
摘要由CSDN通过智能技术生成

快速排序

思想

快速排序使用分治的思想,选定一个基准点,通过一趟排序将待排序的序列分为左右两个部分,其中左边的部分都比基准点要小,右边的基准点都比基准点要大,之后在分别对左右两边的部分,按照相同的思想继续切分,最终达到一个有序队列的目的

复杂度

时间复杂度: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)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值