Day08:资料结构 - 堆积(Heap)

谈谈堆积(Heap)吧!

今天来谈谈堆积(Heap)吧!堆积是一种特别的二元树(Binary tree),那什麽又是二元树?让我们一个一个来解析。


二元树(Binary tree)

树是由节点组成的资料结构

在电脑科学中,二元树只有不超过两个节点(左节点或右节点)的分支,常用於搜寻演算法中。
下图中可以看到,最上面的A为Root,也就是根节点,也可被称为父节点。对於B、C来说,A就是他们的父亲节点,用家族族谱的方式来理解二元树会更容易上手。

注意:左、右节点是有次序之分。

https://ithelp.ithome.com.tw/upload/images/20210908/20128286wsHsSZVNUD.png

二元树分类

常见的二元树分类有两种,第一种是完整二元树、第二种是完美二元树,下列会用列点的方式来整理两者的差异:

  1. Complete Tree
    • 最後一层的节点为基数

https://ithelp.ithome.com.tw/upload/images/20210908/20128286HFyjb68zFE.png

  1. Full Tree
    • 最後一层的节点为偶数
    • 必须为k^2-1个节点

https://ithelp.ithome.com.tw/upload/images/20210908/20128286UCovXdrSwN.png


堆积(Heap)

谈完了二元树,现在回到正题,什麽是堆积,让我们来看看下图,会比较清楚:

https://ithelp.ithome.com.tw/upload/images/20210908/20128286sFdtM7Ze2B.png

从上图中可以看到,二元树的构造以及对应放入的array中,顺序依次由上到下,再从左到右。

分享一篇写得很清楚的堆积排序法(Heap Sort),今天就先不分享程序码,提供其他人的文章给大家参考搂!

http://seanleetech.com/algorithm/168/


延伸阅读:

Python官方文件-堆积伫列 (heap queue) 演算法

https://docs.python.org/zh-tw/3.8/library/heapq.html


<<:  [Day 3] 取得台股资料(基本篇)

>>:  【Day08】执行绪与同步、非同步

[day2]开发规格书阅读-不简单的数位金流API

在看规格书前,默默在想永丰消费支付类型的API只开放几只,是不是两三天就可以完成後端开发及串接的部分...

[区块链&DAPP介绍 Day6] Solidity 教学 - reference types

昨天看完value types,今天来聊聊 reference types。 solidity 的 ...

「认知」是你观望世界的窗,不时擦拭,光线才能穿透。

「认知」是你观望世界的窗,不时擦拭,光线才能穿透。 Your assumptions are you...

[DAY 12] AWS RDS 之 Aurora

Aurora 是 AWS 专有的, 没有开源, 支援 MySQL 与 Postgres 因为是 A...

[Day 19] - 初探永丰银行线上收款API - 订单查询及其他(1)

继续昨天的内容,在建立订单後,如果是信用卡订单,api会回给一个付款页面, 在这个页面用测试资料付款...