不推公式,形象理解堆排序的时间复杂度

简介: 不推公式,形象理解堆排序的时间复杂度

我们首先要明晰几点:1,算堆排序的时间复杂度算的是交换次数而不是比较次数。2,设数据个数为N,高度便为lg N。3,为了推算最坏情况,我们用满二叉树,并且N无限大, lg N也无限大




建堆的时间复杂度

为了追求效率,一般选用向下调整建堆。从倒数第二层的最后一个节点开始向下调整,这一层一共有1/4N个节点,最坏情况下每个节点都要向下调整一次,这一层最坏调整1/4N次,倒数第三层有1/8N个节点,最坏情况下每个节点都要向下调整两次,所以倒数第三层最坏要调整1/4N次,倒数第四层有1/16N个节点,最坏情况下每个节点都要向下调整3次,所以倒数第四层最坏情况最坏要调整3/16N次,这三层已经接近3/4N次了,一次往后推,整个向下调整建堆的交换次数接近N次,所以建堆的时间复杂度在O(N)这个量级。

                                       

                                                排序的时间复杂度

排序时会让第一个数据和最后一个数据交换,让最后一个数据在第一个数据的位置向下调,直到符合堆的排列规则为止,然后总数减一。最后一层有1/2N个数据,最坏情况下,每个数据都要和第一个数据较换并且向下调整,而下调最坏情况是高度次减一,也就是lg N - 1,因为lg N特别大, lg N  ==

lg N - 1。所以最后一层最坏情况是交换1/2N * lg N次,倒数第二层也同理,lg N - 2 == lg N,倒数第三层也同理。所以整体的交换次数是趋近于 N * lg N的,所以排序的时间复杂度在N * lg N这个量级。

                                   

堆排序的时间复杂度

把上述的时间复杂度相加的  N + N * lg N  == N(1  +   lg N),由于lg N 特别大,1可以忽略不计, 所以堆排序的时间复杂度在 N * lg N这个量级。

相关文章
|
机器学习/深度学习 人工智能 物联网
Facechain使用教程:3张照片就能生成个人写真,还完全免费
下面4张图片,小伙伴们有没有看出来哪些是原图,哪些是AI生成的呢?
1324 0
|
算法 C++
【C++11算法】move和move_backward
【C++11算法】move和move_backward
705 0
|
5月前
|
运维 安全 数据可视化
Doris MCP Server v0.6.0 正式发布
Doris MCP Server v0.6.0 重磅发布!全面升级为企业级认证与数据库管理系统,支持多租户隔离、Token绑定配置、热重载免重启、Web可视化管理。增强安全防护、连接池性能飞跃,助力多租户SaaS与高可用生产环境,平滑兼容旧版本,开启数据管理新时代。
241 2
|
数据挖掘
跟着mpg案例学Seaborn之Heatmap
跟着mpg案例学Seaborn之Heatmap
359 1
|
9月前
|
监控 安全 Windows
电脑频繁蓝屏怎么办?5个步骤解决
蓝屏(BSOD)是Windows系统严重错误的提示,常由硬件故障或系统问题引发。本文从蓝屏代码分析入手,提供排查步骤:检查内存、驱动、系统文件、硬盘及电源散热问题,并附安全模式修复方法,帮助用户解决频繁蓝屏困扰。
|
12月前
|
安全 搜索推荐 测试技术
《解锁Windows Server用户权限管理秘籍,打造高效安全办公环境》
在企业中,Windows Server系统是关键业务的中枢,而用户权限管理则是保障数据安全与提升效率的核心。本文深入探讨了如何在Windows Server中进行高效权限配置:通过创建用户账户和组、分配基于角色的最小权限、设置文件夹权限以及定期审核调整,确保员工按需访问资源,同时防范非法操作与数据泄露。这些策略不仅保护敏感信息,还满足合规要求,为企业发展提供稳固支持。
568 18
《解锁Windows Server用户权限管理秘籍,打造高效安全办公环境》
|
缓存 分布式计算 监控
算法优化:提升程序性能的艺术
【10月更文挑战第20天】算法优化:提升程序性能的艺术
|
算法 搜索推荐
数据结构与算法学习十八:堆排序
这篇文章介绍了堆排序是一种通过构建堆数据结构来实现的高效排序算法,具有平均和最坏时间复杂度为O(nlogn)的特点。
602 0
数据结构与算法学习十八:堆排序
|
开发工具 git
成功解决:fatal: detected dubious ownership in repository at ‘E:/workspace/CSMarket‘。如何使用git工具通过命令行的形式
这篇文章分享了作者在使用Git工具初始化本地仓库时遇到的权限问题,提供了通过命令行解决Git仓库权限问题的方案,并介绍了如何使用Git命令行初始化项目、添加文件、提交以及关联远程仓库的步骤。
成功解决:fatal: detected dubious ownership in repository at ‘E:/workspace/CSMarket‘。如何使用git工具通过命令行的形式
|
存储 关系型数据库 MySQL
MySQL 多表查询详解
MySQL 是一个强大的关系型数据库管理系统,多表查询是数据库操作中的重要部分之一。多表查询允许您从多个表中检索和操作数据,以满足复杂的数据需求。本文将介绍 MySQL 多表查询的基本概念、语法和示例,以及一些常见的多表查询场景。
1322 0

热门文章

最新文章