python数据结构堆的示例分析
小编给大家分享一下python数据结构堆的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
十余年的通道网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整通道建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“通道网站设计”,“通道网站推广”以来,每个客户项目都认真落实执行。
1、说明
堆是用数据结构来实现的一种算法:树,数组均可。堆本身是一棵完全二叉树。
2、特点
最大堆:所有父节点的值大于子节点的值
最小堆:所有父节点的值小于子节点的值
3、实例
class Heap(object): def __init__(self, list=[]): self.root = None self.list = list self.tree = None self.len = len(list) # 建堆 def bulid_heap(self): if self.list != []: final_parent_node = int((self.len - 1) / 2) while final_parent_node >= 0: self.heapfy(final_parent_node, self.len) final_parent_node -= 1 # 对当前节点以及向下所有子节点的一次最大节点交换 def heapfy(self, node, len): node_left = 2 * node + 1 node_right = 2 * node + 2 max = node if node_left < len and self.list[node_left] > self.list[max]: max = node_left if node_right < len and self.list[node_right] > self.list[max]: max = node_right if max != node: self.swap(max, node) self.heapfy(max, len) # 交换元素方法 def swap(self, i, j): self.list[j], self.list[i] = self.list[i], self.list[j] # 堆排序 def heap_sort(self): len = self.len - 1 while len >= 0: self.swap(0, len) self.heapfy(0, len) len -= 1 if __name__ == "__main__": list = [5, 7, 3, 1, 10, 0] heap = Heap(list) print("初始列表:{}".format(heap.list)) heap.bulid_heap() print("堆化:{}".format(heap.list)) heap.heap_sort() print("排序:{}".format(heap.list))
看完了这篇文章,相信你对“python数据结构堆的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
网站标题:python数据结构堆的示例分析
标题链接:http://hbruida.cn/article/ippopg.html