当前位置:网站首页>详谈归并排序时间复杂度过程推导----软考
详谈归并排序时间复杂度过程推导----软考
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
边栏推荐
- 供应商对接Chewy的EDI需求
- Harmony OS ets ArkUI 】 【 】 development create a view and building layout
- 【Harmony OS】【ARK UI】自定义弹窗
- `英语` 2022/8/8
- MySQL---performance schema
- 【LeetCode】1283. 使结果不超过阈值的最小除数
- 基于ABP和Magicodes实现Excel导出操作
- matlab simulink 温度控制时延系统 模糊pid和smith控制
- 【暑期每日一题】洛谷 P5729 【深基5.例7】工艺品制作
- How to choose an APS system, it is necessary to clarify these seven key factors
猜你喜欢
mysql content does not exist error
在快手工作是一种什么体验
Still don't know what business intelligence (BI) is?After reading this article, you will understand
【Harmony OS】【ARK UI】自定义弹窗
2022年8月深圳产品经理认证招生简章(NPDP)
Docker部署MySQL
[Harmony OS] [ARK UI] ETS context basic operations
JS-DOM-全局、局部、隐式变量,数组()\函数、 prompt输入对话框、confirm(确定用户的决定-弹出对话框)
Oracle01-安装与卸载
leetcode:315. 计算右侧小于当前元素的个数
随机推荐
【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed
Zuul---路由功能
dsafasfdasfasf
A case of missing heritability
软件测试的方法详细介绍
【HMS core】【Ads Kit】华为广告——海外应用在国内测试正式广告无法展示
JS-全局dom对象的使用---使用htm样式和js函数动作的完全分离
Pycharm社区版专业版下载安装环境配置【精细到每一个步骤】
【Harmony OS】【ARK UI】Date 基本操作
[MLT] Analysis of MLT Multimedia Framework Production and Consumption Architecture (2)
ABP 6.0.0-rc.1的新特性
Storage System Architecture Evolution
JS-DOM-对象的事件onload、匿名函数、this
【LeetCode】136. 只出现一次的数字
Golang入门教程
Ali YunTianChi competition problem (machine learning) - O2O coupons prediction (complete code)
安装pytorch和cuda
程序设计6大原则
【UNR #6 A】面基之路(最短路)
神经网络预测应力应变-单轴实验