Python3 notes

简介: Python3 notes

Python 堆排序

改进参考代码:

1、迭代堆化

2、迭代的两种写法

def heapify(arr):

   n = len(arr)

   for i in reversed(range(n // 2)):

       shiftDown(arr,n,i)


def shiftDown(arr, n, k):

   while2* k +1< n:

       j =2* k +1

       if j +1< n and arr[j +1]< arr[j]:

           j +=1

       if arr[k]<= arr[j]:

           break

       arr[k], arr[j]= arr[j], arr[k]

       k = j


def shiftDown2(arr, n, k):

   smallest, l, r = k,2* k +1,2* k +2

   while l < n:

       if arr[l]< arr[smallest]:

           smallest = l

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

           smallest = r

       if smallest == k:

           break

       else:

           arr[k], arr[smallest]= arr[smallest], arr[k]

           k = smallest

           l, r =2* k +1,2* k +2


def heapSort(arr):

   n=len(arr)

   heapify(arr)

   print("堆化:",arr)

   for i in range(n-1):

       arr[n-i-1],arr[0]= arr[0],arr[n-i-1]

       # print("交换最小值后:",arr)

       shiftDown(arr,n-i-1,0)

       # print("调整后:",arr)



arr =[3,2,1,9,7,8]

heapSort(arr)

print("排序后:",arr)

相关文章
|
8月前
|
移动开发 Python
Python3 notes
Python3 notes
|
8月前
|
小程序 JavaScript Java
个人健康|个人健康管理小程序|基于微信小程序的个人健康管理系统设计与实现(源码+数据库+文档)
个人健康|个人健康管理小程序|基于微信小程序的个人健康管理系统设计与实现(源码+数据库+文档)
404 0
|
8月前
|
数据可视化 测试技术 Python
在Python和R中使用交叉验证方法提高模型性能
在Python和R中使用交叉验证方法提高模型性能
|
敏捷开发 测试技术 项目管理
【软考总结】---软件工程(一)
【软考总结】---软件工程(一)
243 0
|
编解码 数据挖掘 数据处理
[工作必备]pandas数据分析处理52个常用技巧(上)
[工作必备]pandas数据分析处理52个常用技巧
190 1
|
自然语言处理 Python
Python实验三:Python程序设计之组合数据类型
Python实验三:Python程序设计之组合数据类型
492 1
Python实验三:Python程序设计之组合数据类型
《低代码开发师(初级)实战教程》电子版地址
本书基于“低代码开发师(初级)认证”的课程内容,对应课程中请假申请、招聘管理等场景,提供了详细的实践指导,让低代码的初学者快速掌握0代码搭建应用的技能。
100 0
《低代码开发师(初级)实战教程》电子版地址
线程的取消
线程的取消
120 0
html+css实战95-border使用方法
html+css实战95-border使用方法
144 0
html+css实战95-border使用方法
|
运维 负载均衡 安全
最佳实践—如何选择升配与扩容
本文介绍了选择升配与扩容的逻辑和方法。