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)

相关文章
|
6月前
|
SQL 数据库连接 Python
Python3 notes
Python3 notes
|
6月前
|
小程序 JavaScript Java
个人健康|个人健康管理小程序|基于微信小程序的个人健康管理系统设计与实现(源码+数据库+文档)
个人健康|个人健康管理小程序|基于微信小程序的个人健康管理系统设计与实现(源码+数据库+文档)
333 0
|
敏捷开发 测试技术 项目管理
【软考总结】---软件工程(一)
【软考总结】---软件工程(一)
210 0
|
编解码 数据挖掘 数据处理
[工作必备]pandas数据分析处理52个常用技巧(上)
[工作必备]pandas数据分析处理52个常用技巧
173 1
线程的取消
线程的取消
109 0
html+css实战95-border使用方法
html+css实战95-border使用方法
132 0
html+css实战95-border使用方法
SwiftU—使用Group在多个模拟器中预览视图
SwiftU—使用Group在多个模拟器中预览视图
128 0
SwiftU—使用Group在多个模拟器中预览视图
|
存储 Java BI
Java8 Stream相关
Java8 Stream相关
229 0
Java8 Stream相关
|
存储 数据可视化 API
70个注意的Python小Notes
Python读书笔记:70个注意的小Notes 作者:白宁超 2018年7月9日10:58:18 摘要:在阅读python相关书籍中,对其进行简单的笔记纪要。旨在注意一些细节问题,在今后项目中灵活运用,并对部分小notes进行代码标注。
1352 0