搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家自动化
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
简要讲解高速信号的眼图_加重_均衡(高速收发器六)_高速信号眼图
2
RabbitMQ源码分析 - 队列机制
3
【数据挖掘】决策树中根据 信息增益 确定划分属性 ( 信息与熵 | 总熵计算公式 | 每个属性的熵计算公式 | 信息增益计算公式 | 划分属性确定 )_根据信息增益率选择第一个属性
4
【MySQL】复合查询+表的内外连接
5
git如何push本地分支到远程github不存在分支_怎么将本地分支推到仓库不存在的分支
6
【DataX】datax | datax-web | win搭建datax-web环境 | linux环境
7
ai绘画怎么弄?一起来看看注册过程复不复杂
8
filebeat日志采集_filebeat 收集系统日志
9
vscode-server使用clangd语言服务器阅读代码_vscode-server安装
10
死锁和活锁的理解_活锁和死锁的概念
当前位置:
article
> 正文
堆排序的时间复杂度_堆排序的时间复杂度分析
作者:我家自动化 | 2024-06-18 07:40:34
赞
踩
堆排序的时间复杂度分析
阅读本文需先知晓堆的定义与堆排序的实现
堆排序的步骤分两步
首先把序列变成一个有序堆
再不断交换堆顶的最大元素和堆底元素,每次交换都像是选择排序般取走了剩余序列中的最大值
所以我们可以分两个步骤计算堆排序的
时间复杂度
有序堆的构造:等价于对非
叶子节点
从下至上的下沉操作
假设堆高h为一整数,堆有n个节点,那么h = log
2
n
该堆有2
h
个叶子节点,由于叶子节点是最底层,所以无需下沉
倒数第二层的节点有2
h-1
个,该层节点下沉到叶子节点至多需要比较2次(兄弟节点的比较,父节点与较大的兄弟节点的比较),交换1次(如果父节点小于子节点则交换)
倒数第三层有2
h-2
个非叶子节点,他们下沉到倒数第二层之后还要继续下沉到叶子节点(倒数第三层的节点可能比叶子节点还小,所以还要下沉到叶子节点),所以对倒数第二层的节点其下沉至多需要比较4次,交换2次。
以此类推,倒数第n层的下沉所需操作数 = 该层节点数 * 该层节点下沉所需的操作数 ,前者为2
h-n+1
,后者为3(n-1)。
所以根节点作为倒数第h+1层,它的下沉所需操作数就为2
h-(h+1)+1
* 3 (h+1-1) = 2
0
* 3h。
将各层的下沉所需操作数从上至下相加,就是构造整个有序堆的所需操作数:3 ( 2
0
h + 2
1
(h-1) + 2
2
(h-2) +…2
h-1
),设该式为a,则2a - a = 3 ( 2
1
+ 2
2
+…2
h
- h ),根据等比序列的求和公式,我们可以知道a = 3 ( 2
h+1
- 2 - h),代入h,得a = 3(2n - 2 - log
2
n
) ≈ 6n。
综上,建有序堆的时间复杂度是O(n)。
不断交换堆顶元素和堆底元素
共进行n-1次交换,所需操作数为n-1
并且每次交换都会导致根节点不再是堆中的最大元素,所以需要对新的根节点进行下沉操作,所需操作数为3(n-1)h,即3(n-1)log
2
n
综上,该过程所需操作数为n-1 + 3(n-1)log
2
n
= (n-1)(3log
2
n
+ 1),时间复杂度即为O(nlog
n
)
将O(nlog
n
),O(n)两个时间复杂度相加,就是堆排序的时间复杂度O(nlog
n
)
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家自动化/article/detail/734233
推荐阅读
article
基于若依的
ruoyi
-
nbcio
-
plus
里抄送人多页选择人员的bug修复_<
el
-
table
-co...
基于若依的
ruoyi
-
nbcio
-
plus
里抄送人多页选择人员的bug修复_<
el
-
table
-
column
lab
el
...
赞
踩
article
Android
--
SurfaceFlinger
合成主线程 系列 (三)_
android
sur...
SurfaceFlinger
属于system_server进程,在system_init.cpp中利用SurfaceF...
赞
踩
article
入门指南:
使用
uni
-
app
构建
跨平台
应用
_
uni
app
x
跨平台
...
uni
-
app
是一个
使用
Vue.js开发所有前端
应用
的框架,可以发布到iOS、Android、Web(包括PC和移动端浏...
赞
踩
article
2
0
2
4年
Github
上最牛的
Java
进阶
教程
及
Java
实战
项目
都在这里了!(
2
)_
2
0
2
4 jav...
在开头跟大家分享的时候我就说,面试我是没有做好准备的,全靠平时的积累,确实有点临时抱佛脚了,以至于我自己还是挺懊恼的。(...
赞
踩
article
tcp
是
一个
安全
的
网络协议
_
tcp
安全
吗...
1.
tcp
是
一个
安全
的
网络协议
,确定双方的收发能力之后,才会真正传输数据2.
tcp
建立起
一个
连接,比较消耗成本,所以...
赞
踩
article
Spark
SQL利器:
cacheTable
/un
cacheTable
_
uncache
table
...
http://www.cnblogs.com/yurunmiao/p/4936583.html
Spark
相对于Hadoo...
赞
踩
article
聊聊
接口
性能
优化
的
11
个
小技巧
_
接口
请求
性能
优化
...
前言
接口
性能
优化
对于从事后端开发
的
同学来说,肯定再熟悉不过了,因为它是一
个
跟开发语言无关
的
公共问题。该问题说简单也简单,...
赞
踩
article
AI
自然语言
处理
NLP
原理与
Python
实战:
情感
分析模型部署_
python
nlp
情感
分析...
1.背景介绍
自然语言
处理(Natural Language Processing,
NLP
)是人工智能(Artificia...
赞
踩
article
python
入门之
文件
的
读写
_
python
文件
读写
模式
...
1、
python
文件
读写
的方式
文件
读写
就是一种常见的IO操作。
python
封装了操作系统的底层接口,直接提供了
文件
读写
相...
赞
踩
article
android
studio 和
idea
导入
library
工程...
idea
导入
library
方法把工程Import成module后,具体的操作看图:同样的,打开Project stru...
赞
踩
article
计算机专业
的
应届生
,需要掌握哪些技能才能找到
Android
方面的
工作
?_
操作系统
面试
知识点
...
每年大学生毕业季就是最难就业季,钱多活少离家近的
工作
少之又少。作为
应届生
,如果不打算考公、考研,那就一定要早早的进入求职...
赞
踩
article
支付宝
小
程序
的开通流程
_
支付宝
小
程序
教程...
支付宝
小
程序
的开通方式
_
支付宝
小
程序
教程
支付宝
小
程序
教程 现在对于微信
小
程序
大家...
赞
踩
article
云
计算
毕业设计
论文
:高并发大型
互联网站
架构设计
(八)...
每年进入3-4月所有的高等院校开始了一年一度的毕业生答辩准备阶段,现如今毕业
论文
或者
毕业设计
也更加的贴近了互联发展的趋势...
赞
踩
article
网安新
战场:
CTF
的
那些
事
儿_
ctf
那些
事
...
网安新
战场:
CTF
_
ctf
那些
事
ctf
那些
事
CTF
...
赞
踩
article
Gitee
多人
协作进行项目
开发
的详细流程(创建
多人
仓库
)_
gitee
协同
开发
最多五人
吗...
我们在使用GitHub时,最常遇到的问题就是网页加载速度慢或者是无法打开所以我们可以选择使用国内的Git代码托管平台——...
赞
踩
article
Nginx
学习_
nginx
ntlm...
Nginx
安装下载wget http://
nginx
.org/download/
nginx
-1.16.1.tar.gz解...
赞
踩
article
ESP32S3
使用
esp
-
iot
-
solution
SDK
开发
USBHID
鼠标键盘教程...
文章目录一、前言二、环境搭建三、sdkmenu参数配置1、设置
开发
环境2、开始编译3、程序烧录四、错误集合解决办法1、这...
赞
踩
article
Android6.0
图像
合成
过程详解(一)
setUpHWComposer
函数
_
android
d...
上一篇博客分析了,用户进程如何申请一个GraphicBuffer的过程。这篇博客我们进一步分析
图像
合成
过程,其中也解答之...
赞
踩
article
Hadoop
大
数据
入门到实战(第四节) -
HDFS
文件系统
(使用)_
hadoop
创建目录
的
方法为...
这一小节我们来学习:1.
HDFS
的
设计,2.
HDFS
常用命令。
HDFS
的
设计分布式
文件系统
客户:帮我保存一下这几天
的
数据
...
赞
踩
article
MongoDB
限制
与阈值_
mongorestore
吞吐量
...
以下内容是有关
MongoDB
的单个集合在硬件和软件上的
限制
。BSON文档单个Bson文档最大为16M。该
限制
是为了保证单...
赞
踩
相关标签
bug
flowable
vue3
ruoyi-nbcio
前端
android
layer
signal
thread
service
system
uni-app
github
java
开发语言
spark
分布式
面试
程序人生
大数据
人工智能
语言模型
Java
Python