Python3 notes

简介: Python3 notes

Python 堆排序

作为一个菜鸟,感觉源代码的注释写得太少了,以下做点注解吧。

关键有3个点:

1、先把堆调成小根堆的状态,方法是在每个结点的所有根部中确定它的位置;

2、heapify函数实际上是对传入的arr[i]点在其所有根部中确定它的位置;

3、堆头与堆尾交换,此后堆尾退出堆,堆的范围缩小1,公式中i即为堆的长度,之后再将新到堆首的点放在合适的位置,因为其他点均已在正确的位置上,其他点最多与新点交换一次。

def heapify(arr, n, i): 

   largest = i  

   l =2* i +1     # left = 2*i + 1

   r =2* i +2     # right = 2*i + 2

 

   if l < n and arr[i]< arr[l]: 

       largest = l

 

   if r < n and arr[largest]< arr[r]: 

       largest = r

 

   if largest != i: 

       arr[i],arr[largest]= arr[largest],arr[i]  # 交换

       # 此时largest位置的数字(也就是最开始输入那个lis[i])处于待定状态,需要在它所有根部中确定其位置

       heapify(arr, n, largest) 

 

def heapSort(arr): 

   n = len(arr) 

 

   # Build a maxheap.

   for i in range(n,-1,-1): 

       # 先把堆调整好小根堆的状态,在全堆中逐个调整每个数字的位置,调整的方法是在它所有根部中确定其位置

       heapify(arr, n, i) 

 

   # 一个个交换元素

   for i in range(n-1,0,-1): 

       arr[i], arr[0]= arr[0], arr[i]   # 交换

       # 把新上来的0号安排到合适的位置上去,其中i指的是要调整的堆的范围

       heapify(arr, i,0)

相关文章
|
存储 消息中间件 Kafka
Hudi 压缩(Compaction)实现分析
Hudi 压缩(Compaction)实现分析
459 1
|
6月前
|
人工智能 自然语言处理 PyTorch
Instella:AMD开源30亿参数语言模型!训练效率碾压同级选手
Instella是AMD推出的30亿参数开源语言模型,基于自回归Transformer架构,支持多轮对话、指令跟随和自然语言理解,适用于智能客服、内容创作和教育辅导等多个领域。
117 1
|
10月前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
存储 消息中间件 缓存
|
数据采集 Python
环境调试——EA-LSS
对比 E-H:同样增加速度增强之后,放大图像的调整范围,DAL 会比 BEVFusion 略微提升。作者说速度增强挑战了点云线索的回归任务预测,这迫使模型利用图像线索。(没懂,插个眼)
367 1
|
前端开发
canvas系列教程02——圆、弧线、圆角矩形、曲线(气泡、心形、N叶草)、扇形
canvas系列教程02——圆、弧线、圆角矩形、曲线(气泡、心形、N叶草)、扇形
233 0
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的速达物流信息查询微信小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的速达物流信息查询微信小程序的详细设计和实现
165 0
|
数据采集 定位技术
Google Earth Engine(GEE)——全球建筑物数据集(MSBuildings数据集)包含微软7.77忆建筑物
Google Earth Engine(GEE)——全球建筑物数据集(MSBuildings数据集)包含微软7.77忆建筑物
301 0
|
存储 Kubernetes 负载均衡
K8S基础篇:概念与架构
**Kubernetes** 是一个可移植的、可扩展的开源平台,用于**管理容器化的工作负载和服务,可促进声明式配置和自动化**。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用
515 2
K8S基础篇:概念与架构
|
机器学习/深度学习 编解码 自然语言处理
PAI-Diffusion中文模型全面升级,海量高清艺术大图一键生成
本文主要介绍-Diffusion中文模型大幅升级,本文详细介绍PAI-Diffusion中文模型的新功能和新特性。
PAI-Diffusion中文模型全面升级,海量高清艺术大图一键生成