Python中数据结构,Python堆
说明
1、堆是用数据结构来实现的一种算法:树,数组均可。堆本身是一棵完全二叉树。
2、特点,堆:所有父节点的值大于子节点的值。最小堆,所有父节点的值小于子节点的值。
实例
类堆(对象):
def__init__(self,list=[]):
self.root=None
self.list=list
self.tree=无
self.len=len(列表)
#建堆
defbulid_heap(self):
ifself.list!=[]:
最终父节点=int((self.len-1)/2)
whilefinal_parent_node=0:
自我健康(最终_父节点,self.len)
最终父节点-=1
#对当前节点以及向下所有子节点的一次节点交换
defheapfy(自身、节点、长度):
node _ left=2 *节点数字一(one)
node _ right=2 *节点注射毒品
最大=节点
if node _ leftlenandself。列出[node _ left]自己。列表[max]:
max=node_left
if node _ rightlenandself。列出[node _ right]自己。列表[max]:
max=node_right
ifmax!=节点:
自我交换(最大,节点)
self.heapfy(max,len)
#交换元素方法
defswap(self,I,j):
self.list[j],self.list[i]=self.list[i],self.list[j]
#堆排序
defheap_sort(self):
len=self.len-1
whilelen=0:
self.swap(0,len)
self.heapfy(0,len)
len-=1
if__name__==__main__:
list=[5,7,3,1,10,0]
堆=堆(列表)
打印(初始列表:{}.格式(heap.list))
heap.bulid_heap()
打印(堆化:{}.格式(heap.list))
heap.heap _排序()
打印(排序:{}.格式(heap.list))以上就是大蟒数据结构堆的介绍,希望对大家有所帮助。更多计算机编程语言学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1、戴尔自交第三代电脑。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。