归并排序的递归过程如下,该递归树的高度为log2n(计算过程:假设待排序的数组元素个数为n,设高度为x,x意味着n个元素需要连续二分x次才剩下1个元素,即n/2^x=1,x=log2n),每一层的总比较次数为n,所以时间复杂度为nlogn。

快速排序的分析过程类似。快速排序的平均时间复杂度同样为nlogn。假设在平均情况下每次选取的基准值均为该数组的中间值,因此每次都将数组分成两半,直到分割到只剩一个元素。假设n个元素平分了x次后只剩1个元素,则n/2^x=1,x=log2n。每次分割后的比较次数为n(参考上图),所以时间复杂度为nlogn。

归并排序的时间复杂度为什么为nlogn相关推荐

  1. 排序算法-归并排序的时间复杂度分析

    归并排序,其实就是递归+合并. 归并排序将数组取中间分为两部分,两个子数组分别各自再从中间分为两个子数组,一直分下去直到不能再分.分完之后,再按照子数组大小合并为为一个有序数组,然后层层向上合并,直到 ...

  2. 十大排序算法(C++)(时间复杂度O(nlogn)篇:希尔排序、堆排序、快速排序、归并排序)

    希尔排序 希尔排序本质上是对插入排序的一种优化,它既有插入排序的简单,同时也解决了插入排序每次只交换相邻两个元素的缺点.插入排序过程如下: 1.将数组按照一定的间隔分为多个子数组(每跳跃一定间隔取一个 ...

  3. 归并排序的时间复杂度

    归并排序算法你还记得吧?它的递归实现代码非常简洁.现在我们就借助归并排序来看看,如何用递归树,来分析递归代码的时间复杂度. 归并排序每次会将数据规模一分为二.我们把归并排序画成递归树,就是下面这个样子 ...

  4. 二路归并排序及时间复杂度分析

    序言 二路归并排序是一种效率极高的递归排序,将数组A化为有序数组时间复杂度为O(nlogn). 思想 二路归并排序分为拆分数组以及合并两个操作. 切分(自上而下)时间复杂度2*T(n/2) 每次从数组 ...

  5. 912. 排序数组——归并排序Java时间复杂度空间复杂度稳定性分析

    目录 1.题目 2.思路 归并排序--nlogn 思想--递归 代码 时间复杂度--O(nlogn) 空间复杂度--O(n) 稳定性--稳定 3.结果 1.题目 2.思路 这个题可以作为练习手写各种排 ...

  6. 关于快速排序和归并排序的时间复杂度分析

    目录 一.快排时间复杂度分析 二.归并排序时间复杂度分析 三.写在最后 一.快排时间复杂度分析 快速排序的时间复杂度在O(nlogn)~ O(n^2)之间,下面我分别分析这两种情况: (一)快速排序的 ...

  7. LeetCode 42. Trapping Rain Water 【两种解法】(python排序遍历,C++ STL map存索引,时间复杂度O(nlogn))

    LeetCode 42. Trapping Rain Water Python解法 解题思路: 本思路需找到最高点左右遍历,时间复杂度O(nlogn),以下为向左遍历的过程. 将每一个点的高度和索引存 ...

  8. 使用递归实现归并排序及归并排序的时间复杂度

    1.什么是递归:方法调用其本身. 2.怎么样去实现 需要写递归表达式,递归表达式分为: 1)递归出口 2)递归关系 例1:斐波那契数:1,1,2,3,5,8,13........n,求第n 项 1)递 ...

  9. 排序算法之 归并排序 及其时间复杂度和空间复杂度

    在排序算法中快速排序的效率是非常高的,但是还有种排序算法的效率可以与之媲美,那就是归并排序:归并排序和快速排序有那么点异曲同工之妙,快速排序:是先把数组粗略的排序成两个子数组,然后递归再粗略分两个子数 ...

最新文章

  1. Javascript学习--------详解window窗口对象
  2. 同步pod时区与node主机保持一致
  3. Waymo冰火两重天:无人出租车最快今秋推出,高管团队嫌隙严重
  4. mysql8安装后初始化密码
  5. 第八章 基本脚本编译
  6. 南信大c语言实验8报告,北科大C语言程序设计实验报告8论文报告.doc
  7. 【JEECG示例文档】使用Kettle从mysql向oracle中抽取数据
  8. Mac osx 下配置ANT
  9. 【Kafka】Kafka Schema Registry 原理
  10. 查看openssh版本_新版的Reveal如何查看越狱手机APP
  11. Python基础 ( 十 ) —— 面向对象(多态、封装、反射、动态导入)
  12. 给apm换一个软件源
  13. java 置位_java安全编码指南之:Mutability可变性详解
  14. SOP、SSOP、TSOP、TSSOP、SOL、SOJ 封装的区别
  15. excel游戏_Excel集中游戏
  16. 红外遥控风扇改手机APP远程控制杂记
  17. WP7 个人股票软件 GilStock v1.0 正式版
  18. 51单片机入门学习 第六天
  19. 核心交换机链路聚合、冗余、堆叠、热备份
  20. 在Mac机上用命令idevice_id -l来查udid和ideviceinstaller -l来查看bundleId出现错误

热门文章

  1. Flink的状态一致性
  2. R语言第九讲 验证集法
  3. linux强制停止压缩任务,6.25任务(linux压缩、打包命令:zip、tar)
  4. python调用接口测试_Python接口测试实战2 - 使用Python发送请求
  5. 论文浅尝 - ISWC2021 | 当知识图谱遇上零样本视觉问答
  6. 技术动态 | 知识图谱上的实体链接
  7. 如何下载Android源码(非常详细,含自动恢复下载,编译,运行模拟器说明)
  8. 基于在线百科知识库的多义词词义消歧项目
  9. spring cloud eureka注册原理-注册失败填坑
  10. leetcode-187-重复的DNA序列