堆
程序员迪迦
【我是谁?】本人23届双非普本毕业,在互联网寒冬中通过秋招收到多家大厂的录用offer:快手、米哈游、京东、滴滴等,经历过几十次的大厂面试,实习和秋招面试经验充足。【目的是?】在我的成长过程中,许多前辈大佬帮助过我,我也真诚的希望能给大家带来一些帮助,关注我,进大厂不迷路!
展开
-
File Transfer(并查集的应用)
对于并查集的原理和应用,主要有三点重点需要理解记忆。 集合的表示 按秩归并(可以最小化堆的树高) 路径压缩(再寻找父节点时无需进行循环,一步到位) 集合的表示 集合里的每一个个体都需要保存两种数据,一个是自身的数据,一个是它的父亲是谁,由于本题所给数据都为数字,故可以直接用一个数组来存储(类似与静态链表的感觉),数组的下标就代表了是第几个个体,而每个值则代表父亲是谁,初始值全设为-1,最后将根结点的值修改成 (-儿子个数),这样在按秩归并的时候用来判断集合的大小(即树高) 按秩归并 普通的归并: set原创 2020-08-18 17:43:07 · 551 阅读 · 0 评论 -
堆的原理及其完全二叉树代码实现
优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是 依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。 如何用一种数据结构来组织堆:完全二叉树,树根就是此时数据优先度最高的,随着数据的插入删除,优先度最高的树根也在动态变化。 完全二叉树的表示:一维数组,其中arr[0]为哨兵元素。 typedef struct HeapStruct *MaxHeap; struct HeapStruct { ElementType *Elements; /* 存储堆元素的数组 */原创 2020-08-03 15:11:45 · 253 阅读 · 1 评论