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

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

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

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

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

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

Python 堆排序

来源:千锋教育
发布人:xqq
时间: 2023-11-06 13:29:32

原理

堆排序(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-06

用python怎么实现判断素数

2023-11-06

python如何将结果保存

2023-11-06

最新文章NEW

没基础的学python能学会吗?

2023-11-06

如何利用python快速生成大文件

2023-11-06

ubuntu安装python3的几种方式

2023-11-06

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>