归并排序方法就是把一组n个数的序列,折半分为两个序列,然后再将这两个序列再分,一直分下去,直到分为n个长度为1的序列。然后两两按大小归并。如此反复,直到最后形成包含n个数的一个数组。

归并排序总时间=分解时间+子序列排好序时间+合并时间

无论每个序列有多少数都是折中分解,所以分解时间是个常数,可以忽略不计。

则:归并排序总时间=子序列排好序时间+合并时间


如果假设一个序列有n个数的排序时间为T(n),T(n)是一个关于n的函数,随着n的变化而变化。

那么我们将n个数的序列,分为两个(n/2)的序列。

那么T(n)=2*T(n/2)+合并时间

由于合并时,两个子序列已经组内排好序了,那我们将两个排好序的序列组合成一个大的有序序列,只需要一个if循环即可。if循环中有n个数需要比较,所以时间复杂度为n。

那么T(n)=2*T(n/2)+n

我们再将两个n/2个序列再分成4个(n/4)的序列。

一个(n/2)序列排序时间=两个(n/4)的序列排序时间+两个(n/4)的序列的合并为一个(n/2)的序列时间

T(n/2)=2*T(n/4)+n/2

将T(n/2)带入到T(n)中,T(n)=2*(2*T(n/4)+n/2)+n,

通过化简T(n)=4*T(n/4)+2n

我们再将4个n/4个序列再分成8个(n/8)的序列。

T(n/4)=2*T(n/8)+n/4

将T(n/4)带入到黄色公式中,T(n)=4*(2*T(n/8)+n/4)+2n

通过化简T(n)=8*T(n/8)+3n

······


这样分下去,前面我们已经说过了,分为n个序列,每个序列里只有一个数为止。

前面我们假设的一个序列有n个数的排序时间为T(n),现在每个序列只有一个数,所以不需要进行组内排序,时间复杂度为0。T(1)=0

大家有没有找到规律,右边式子中n前面的系数随着层数的增加而增加,第一层公式中没有n,则系数为0,第二层n的系数为1,第三层为2,第四层为3。那么规律就出来了,n前面的系数为层数减1。

那这个图有没有很熟悉,就像一个二叉树一样,通过二叉树的知识点我们可以知道,一个n个结点的完全二叉树层数为(log2n)+1。

那么n前面的系数为层数减1。

(log2n)+1-1=log2n

那log2n就是最底层n的系数。

那么我们最后一层是不是可以这样表示

T(n)=n*T(1)+(log2n)*n

T(1)=0,那么T(n)=(log2n)*n

所以归并排序的时间复杂度为nlog2n

详谈归并排序时间复杂度过程推导----软考相关推荐

  1. 软考归来~分享一下历程和心得体会

    软考结束了,分享一下我的备战的过程和心得体会. 备战过程: 软考备战应该是学长学姐们给我传授经验的一次交谈开始的,通过这次交谈他们告诉了我关于软考的大纲.题型.备考的一些注意事项.通过这次会议我对软考 ...

  2. 整理分析自己的软考过程

    上周六软考结束,也就意味着我们100多天的纠结备考结束了,心里并没有释然的畅快,反而愁上心头.2010年下半年软考上午题说起来难度不小,计算题出的比较陌生.磨人,英语题更是没读通,仅凭语感做完.相比较 ...

  3. 简练软考知识点整理-控制成本过程

    控制成本是监督项目状态,以更新项目成本,管理成本基准变更的过程.本过程的主要作用是,发现实际与计划的差异,以便采取纠正措施,降低风险. 要更新预算,就需要了解截至目前的实际成本.只有经过实施整体变更控 ...

  4. 简练软考知识点整理-项目启动过程组

    启动过程组包含定义一个新项目或现有项目的一个新阶段,授权开始该项目或阶段的一组过程.在启动过程中,定义初步范围和落实初步财务资源,识别那些将相互作用并影响项目总体结果的内外部干系人,选定项目经理(如果 ...

  5. 在过程中要正式批准可交付成果_干货!软考高项项目管理知识体系5大过程组47个过程...

    现在应该很多小伙伴都在紧张的复习软考中,为了让大家更加高效的复习,今天给大家分享软考高级信息系统项目管理师的考试重点,项目管理知识体系的5大过程组47个过程. 考高项的朋友都知道,47个过程是非常重要 ...

  6. 简练软考知识点整理-估算成本过程

    估算成本是对完成项目活动所需资金进行近似估算的过程.本过程的主要作用是,确定完成项目工作所需的成本数额. 成本估算是在某特定时点,根据已知信息所做出的成本预测.在估算成本时,需要识别和分析可用于启动与 ...

  7. (九五至尊)九大管理体系,五大过程组:软考高级信息系统项目管理师

    在一些正规的事业单位,国企或央企里,有以考代评这么一说,考指的就是软考,评就是评职称.意思就是说,只要你通过了软考高级,成为国家工信部认定的高级工程师,公司内部自然也会认定你的职级为高级工程师. 小编 ...

  8. 简练软考知识点整理-项目管理过程与过程组

    过程是指旨在创造最终成果的系统化的系列活动,以便对一个或多个输入进行加工,生成一个或多个输出.现代项目管理理论认为,任何项目都是由两个过程构成的,其一是项目的实现过程(产品导向过程),其二是项目的管理 ...

  9. 简练软考知识点整理-创建工作分解结构过程

    创建工作分解结构(WBS)是把项目可交付成果和项目工作分解成较小的.更易于管理的组件的过程.本过程的主要作用是,对所要交付的内容提供一个结构化的视图.     WBS是对项目团队为实现项目目标.创建可 ...

  10. 简练软考知识点整理-项目收尾过程组

    收尾过程组包含完结所有项目管理过程组的所有活动,正式结束项目或阶段或合同责任的一组过程.当本过程组完成时,就表明为完成某一项目或项目阶段所需的所有过程组的所有过程均已完成,标志着项目或项目阶段正式结束 ...

最新文章

  1. No module named ‘prompt_toolkit.enums‘
  2. html5 填充下拉框,Html5添加实现Bootstrap下拉列表框鼠标滑过时打开的插件教程
  3. 深度学习将会变革NLP中的中文分词——TODO 待好好细看
  4. c# 找出目录下的所有子目录_Linux操作系统文件目录
  5. [ASP.NET Core 2.0 前方速报].NET Core 2.0.3 已经支持引用第三方程序集了
  6. linux更改nginx最大访问数,Linux下nginx服务的配置文件nginx.conf中模块的讲解之配置limit_conn_zone来限制并发连接数以及下载速率...
  7. android Intent和IntentFilter
  8. linux-简单进程查询
  9. 亚马逊招聘,无人超市研发部门
  10. 信息安全完全参考手册之本书框架(目录)
  11. robotframework 测试工具添加PDF文件内容匹配插件
  12. Emacs编辑Nginx
  13. 嵌入式系统功能需求分析_嵌入式系统开发流程及前景分析
  14. Windows服务器高并发处理IOCP(完成端口)详细说明
  15. 风尚云网学习-h5的input:type属性的image属性
  16. 图论基础——启发式搜索
  17. linux 更新etc profile,讲解Linux系统中修改/etc/profile文件的方法
  18. Vue 兄弟组件之间的通信
  19. 工作日志之Sonar扫描错误处理-Sonar扫描结果入库 java.sql.BatchUpdateException: Incorrect string value: '\xF3\xA3\xAC\xB
  20. Java中csv文件读写分析

热门文章

  1. css模糊遮罩效果_CSS 半透明遮罩层
  2. 名字打架小游戏flash版
  3. 原生JS实现图片幻灯片效果
  4. 给大家推荐12款好用的3D编辑器
  5. Flink 异步IO
  6. QT翻译的使用及避坑指南
  7. 咸鱼笔记:《实用软件工程》第一、二章课后简答题及参考答案
  8. [Mac OS] Homebrew简介及安装wine
  9. PHP+Swoole实现的网页即时聊天通讯工具:PHPWebIM
  10. 托福试卷真题_托福考试真题 - 韩语自学网