当前位置:网站首页>详谈归并排序时间复杂度过程推导----软考
详谈归并排序时间复杂度过程推导----软考
2022-08-09 04:58:00 【张先生-您好】
详谈归并排序时间复杂度过程推导----软考
转载地址:https://blog.csdn.net/liangjiabao5555/article/details/89670082
归并排序方法就是把一组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
边栏推荐
- 程序设计6大原则
- Software testing method is introduced in detail
- JS-DOM-全局、局部、隐式变量,数组()\函数、 prompt输入对话框、confirm(确定用户的决定-弹出对话框)
- Example of 360 assessment feedback questions
- php write online remote file to temp file
- 【luogu U142356】Suffix of the Brave (SA) (Chairman Tree) (2 points)
- 杰理之手机OTG问题【篇】
- 存储系统架构演变
- equals和==
- 【HMS core】【ML kit】机器学习服务常见问题FAQ
猜你喜欢
![[Harmony OS] [ArkUI] ets development graphics and animation drawing](/img/36/f4c91f794b1321f11a24505d1617fb.png)
[Harmony OS] [ArkUI] ets development graphics and animation drawing

Harmony OS ets ArkUI 】 【 】 the development basic page layout and data connection

P1163 银行贷款

力扣202-快乐数——哈希集合

Still don't know what business intelligence (BI) is?After reading this article, you will understand

软件测试的方法详细介绍

LeetCode-636. 函数的独占时间

关于sys.path.append(‘..‘)失效

基于ABP和Magicodes实现Excel导出操作

如何剪裁svg并压缩
随机推荐
软件测试的方法详细介绍
Pycharm社区版专业版下载安装环境配置【精细到每一个步骤】
MySQL: Implementation Principles of Submitted Read and Repeatable Read | MVCC (Multi-Version Concurrency Control) - Notes for Your Own Use
无法通过头文件中的宏定义或全局变量修改动态库中的参数
杰理之播歌曲前后音量大小不一样【篇】
【Harmony OS】【ArkUI】ets开发 图形与动画绘制
【学习笔记】AGC044
[MLT] Analysis of MLT Multimedia Framework Production and Consumption Architecture (2)
【暑期每日一题】洛谷 P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
leetcode:315. 计算右侧小于当前元素的个数
Why do enterprises need business intelligence BI in the digital age
【LeetCode】169. 多数元素
匿名共享内存 ashmem
php将在线远程文件写入临时文件
浙江DAMA-CDGA/CDGP数据治理认证招生简章
数据库事务&锁机制
杰理之ANC OFF语音没有作用【篇】
Hhhhgffsb
How to choose an APS system, it is necessary to clarify these seven key factors
【暑期每日一题】洛谷 P5724 【深基4.习5】求极差 / 最大跨度值