千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:杭州千锋IT培训  >  技术干货  >  Python 堆排序

Python 堆排序

来源:千锋教育
发布人:xqq
时间: 2023-11-13 03:24:50

原理

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

步骤

创建最大堆:将堆所有数据重新排序,使其成为最大堆

最大堆调整:作用是保持最大堆的性质,是创建最大堆的核心子程序

堆排序:移除位在第一个数据的根节点,并做最大堆调整的递归运算

代码

defheap_sort(list):

#创建最大堆

forstartinrange((len(list)-2)//2,-1,-1):

sift_down(list,start,len(list)-1)

#堆排序

forendinrange(len(list)-1,0,-1):

list[0],list[end]=list[end],list[0]

sift_down(list,0,end-1)

returnlist

#最大堆调整

defsift_down(lst,start,end):

root=start

whileTrue:

child=2*root+1

ifchild>end:

break

ifchild+1<=endandlst[child]

child+=1

iflst[root]

lst[root],lst[child]=lst[child],lst[root]

root=child

else:

break

以上内容为大家介绍了Python堆排序,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

python归并排序和快速排序比较

2023-11-14

pythonif-elif-else语句的使用注意

2023-11-14

python如何定义一个函数

2023-11-14

最新文章NEW

python怎么传参数

2023-11-14

python如何查看对象属性

2023-11-14

python如何确定是否为可迭代对象

2023-11-14

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>