堆排序代码及时间空间复杂度

堆排序(Heap Sort)是一种基于二叉堆数据结构的排序算法,它的时间复杂度为 O(n log n),并且具有原地排序(in-place sorting)的特点。下面是堆排序的代码示例和时间空间复杂度分析,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。

堆排序的代码示例:

def heapify(arr, n, i):largest = ileft_child = 2 * i + 1right_child = 2 * i + 2if left_child < n and arr[left_child] > arr[largest]:largest = left_childif right_child < n and arr[right_child] > arr[largest]:largest = right_childif largest != i:arr[i], arr[largest] = arr[largest], arr[i]heapify(arr, n, largest)def heap_sort(arr):n = len(arr)# 建立最大堆for i in range(n // 2 - 1, -1, -1):heapify(arr, n, i)# 逐个从堆中取出元素for i in range(n - 1, 0, -1):arr[i], arr[0] = arr[0], arr[i] # 交换根节点与最后一个节点heapify(arr, i, 0) # 重新调整最大堆# 示例用法
arr = [3, 6, 8, 10, 1, 2, 1]
heap_sort(arr)
print(arr)

时间复杂度:

  • 堆排序的时间复杂度:堆排序的平均、最坏和最好情况下的时间复杂度都是 O(n log n)。

空间复杂度:

堆排序是一种原地排序算法,不需要额外的空间,因此空间复杂度为 O(1)。这是堆排序的一个重要优点之一,因为它不需要额外的内存用于临时存储数据,适用于内存有限的情况。

堆排序虽然时间复杂度不如快速排序那么稳定,但在实际应用中仍然是一种非常有效的排序算法,特别适用于需要原地排序的场景。堆排序也被广泛用于实现优先队列等数据结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/117303.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用selenium和xpath定位元素并获取属性值以及str字符型转json型

页面html如图所示&#xff1a; 要使用xpath定位这个div元素&#xff0c;并且获取其属性data-config的内容值。 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Optionshost127.0.0.1 port10808 …

springboot 获取参数

1.获取简单参数 2.实体对象参数

数字森林:无人机航测技术在林业调查中的应用

林业调查是林业工作的基础&#xff0c;对于森林资源的管理、规划、保护、经济发展和农业种植等方面都具有重要的意义。传统林业调查主要依赖人工进行&#xff0c;存在工作效率低、数据精度低、数据分析困难、受地形限制、无法实时监测等缺陷。 随着科技的不断发展&#xff0c;无…

低功耗蓝牙物联网:未来连接的无限可能

物联网是连接各种设备和传感器的网络&#xff0c;其目的是实现信息的交换和共享&#xff0c;提高效率并优化生活。在这个领域&#xff0c;低功耗蓝牙&#xff08;BLE&#xff09;正在发挥着越来越重要的作用。 低功耗蓝牙是一种无线通信技术&#xff0c;它的主要特点是低功耗和…

【Hadoop】HDFS API 操作大全

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1…

中秋节听夜曲,Android OpenGL 呈现周董专属的玉兔主题音乐播放器

概述 前几天发现QQ音乐有个好玩的功能&#xff0c;为用户提供了多种 播放器主题&#xff0c;其中 原神 的主题让我眼前一亮&#xff1a; 当然&#xff0c;诸如 换肤、主题 类的功能已经屡见不鲜&#xff0c;但这类沉浸式播放器的听歌体验确实不错。 见猎心喜&#xff0c;正好…

【力扣周赛】第 363 场周赛(完全平方数和质因数分解)

文章目录 竞赛链接Q1&#xff1a;100031. 计算 K 置位下标对应元素的和竞赛时代码写法2——手写二进制中1的数量 Q2&#xff1a;100040. 让所有学生保持开心的分组方法数&#xff08;排序后枚举分界&#xff09;竞赛时代码 Q3&#xff1a;100033. 最大合金数&#xff08;二分答…

优化系统报错提示信息,提高人机交互(三)

对于业务比较复杂的接口&#xff0c;可能存在方法嵌套&#xff0c;每个方法都可能会报错&#xff0c;出现异常&#xff0c;那么需要把异常信息返回给接口调用者&#xff0c;如何实现呢&#xff1f; &#xff08;1&#xff09;捕获异常进行处理&#xff0c;不返回 controller代码…

【Kubernetes】Kubernetes的污点和容忍度

Kubernetes的污点和容忍度 在K8S中&#xff0c;如果Pod能容忍某个节点上的污点&#xff0c;那么Pod就可以调度到该节点。如果不能容忍&#xff0c;那就无法调度到该节点。污点和容忍度就像谈恋爱的小情侣&#xff0c;你情我愿&#xff0c;女生知道男生的缺点&#xff0c;却依然…

基于STM32和LORA组网的养老院智能控制系统设计(第十八届研电赛)

一、整体功能 数据采集从机1采集烟雾浓度&#xff0c;PM2.5浓度&#xff0c;甲醛浓度&#xff1b;从机2采集温湿度&#xff0c;光照强度&#xff0c;噪声强度&#xff0c;老人体感温度&#xff1b;从机3收集厨房饮用水的TDS值。3个数据采集从机将采集到的数据显示在本地OLED屏…

记一次nginx负载均衡健康检查引起的事故之no live upstreams while connecting to upstream

文章目录 概要一、负载均衡1.1、常用指令解析1.2 负载算法配置1.3、反向代理 二、事故分析三、小结 概要 Nginx是工作中常用的HTTP服务中间件&#xff0c;除了提供HTTP服务&#xff0c;常用的还有反向代理、限流、负载均衡等功能。 负载均衡支持七层负载均衡&#xff08;HTTP&…

28.CSS 渐变圆文本动画

效果 源码 index.html <!doctype html> <html> <head><meta charset="utf-8"><title>Glowing Gradient Circle Text Animation</title><link rel="stylesheet" href="style.css"> </head> &l…