Python3 notes

简介: Python3 notes

Python 堆排序

堆排序有点像先二分法找极大值,再冒泡排序:

# 假定数组最后一位是根节点,其他部分平分为分支节点

# 经过一次OneHeapSort,找到最大值并放到根节点

defOneHeapSort(list, l, r):

   if r-l<=0:

       return

   if r-l==1and list[l]>list[r]:

       list[l],list[r]= list[r],list[l]

   else:

       middle = l +(r-l-1)//2

       OneHeapSort(list, l, middle)

       OneHeapSort(list, middle+1, r-1)

       if list[middle]>list[r]:

           list[middle],list[r]= list[r],list[middle]

       if list[r-1]>list[r]:

           list[r-1],list[r]= list[r],list[r-1]


# 依次将最大值放到数组的后面

def heapSort(list):

   for i in range(len(list)-1,0,-1):

       OneHeapSort(list,0, i)



list =[1,10,8,200,50,4]

heapSort(list)

print(list)# [1,4,8,10,50,200]



稍微改下有点像归并排序,只不过归并排序是给子序列排序,而这个是每轮循环找出最大值

defOneHeapSort(list, l, r):

   if r-l<=0:

       return

   else:

       middle = l +(r-l-1)//2

       OneHeapSort(list, l, middle)

       OneHeapSort(list, middle+1, r)

       if list[middle]>list[r]:

           list[middle],list[r]= list[r],list[middle]


# 依次将最大值放到数组的后面

def heapSort(list):

   for i in range(len(list)-1,0,-1):

       OneHeapSort(list,0, i)



list =[1,10,8,200,50,4]

heapSort(list)

print(list)# [1,4,8,10,50,200]

相关文章
|
JSON Java API
一款适合IT团队的在线API文档、技术文档工具-showdoc介绍
为大家推荐一款适合IT团队的在线API文档、技术文档工具,有免费开源和在线托管的版本。可以直接使用官网搭建好的地址,也可以在自己的服务器上搭建。
一款适合IT团队的在线API文档、技术文档工具-showdoc介绍
|
8月前
|
移动开发 Python
Python3 notes
Python3 notes
|
8月前
|
开发框架 JavaScript API
uniapp如何实现跨端适配
uniapp如何实现跨端适配
251 0
|
索引 Python
Python快速上手系列--元组--详解篇
Python快速上手系列--元组--详解篇
68 0
|
编译器 调度 C++
进程地址空间
进程地址空间
109 0
|
人工智能 运维 Cloud Native
开发者社区每月重点内容推荐(2022-11)
开发者社区每月重点内容推荐(2022-11),涵盖本月技术动态、内容创新、干货书籍等内容,一文速览社区当月动态。
开发者社区每月重点内容推荐(2022-11)
|
算法 编译器 测试技术
【C++要笑着学】从零开始实现日期类 | 体会代码的复用 | 提供完整代码(一)
啊,朋友们好啊。我是柠檬叶子C,上一章我们讲解了运算符重载,本篇将手把手从零开始一步步实现一个Date类,将会对每个步骤进行详细的思考和解读。
114 0
【C++要笑着学】从零开始实现日期类 | 体会代码的复用 | 提供完整代码(一)
|
Kubernetes 安全 容器
Kubernetes CKS【21】---Runtime Security -主机与容器行为安全分析(strace、/proc、env、falco)(2)
Kubernetes CKS【21】---Runtime Security -主机与容器行为安全分析(strace、/proc、env、falco)(2)
Kubernetes CKS【21】---Runtime Security -主机与容器行为安全分析(strace、/proc、env、falco)(2)
|
JavaScript
Bug:Vue路由不跳转而是刷新页面
Bug:Vue路由不跳转而是刷新页面
92 0