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)
【数据结构】哈希经典应用:位图——[深度解析](8)
|
网络安全 C#
FTP 被动模式配置
FTP 被动模式配置
219 0
FTP 被动模式配置
|
分布式计算 Hadoop 大数据
|
JavaScript 安全 API
同源策略介绍及解析
同源策略介绍及解析
249 0
|
人工智能 5G 测试技术
开源移动核心网 Magma 架构设计启示
开源移动核心网 Magma 架构设计启示
334 0
|
Dubbo 应用服务中间件 Apache
java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory
java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory
637 0
java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory
|
安全 Java 数据库
SpringSecurity安全框架(课时二十一)
SpringSecurity安全框架(课时二十一)
203 0
|
监控 Java 开发工具
推荐一个分布式JVM监控工具,实惠好用,开源(附源码)!
推荐一个分布式JVM监控工具,实惠好用,开源(附源码)!
441 0
推荐一个分布式JVM监控工具,实惠好用,开源(附源码)!