堆
文章平均质量分 66
饭小粒
蓝牙&Android&iOS&EN
展开
-
大顶堆/小顶堆的构建以及排序的应用
这里我们用数组表示待排序序列,则最后一个非叶子结点的位置是:数组长度/2-1。第 3 步:交换过后可能不再满足大顶堆的条件,所以需要将剩下的 n-1 个元素重新构建成大顶堆。再比较当前结点的值和右子树的值,如果当前节点小于右子树的值,就交换当前节点和右子树;比较当前结点的值和左子树的值,如果当前节点小于左子树的值,就交换当前节点和左子树;是不是对上面这一大段文字很头疼?:每个结点的值都大于或等于其左右孩子结点的值。:每个结点的值都小于或等于其左右孩子结点的值。无需交换调整的时候,则大顶堆构建完成。转载 2023-11-24 16:32:35 · 146 阅读 · 0 评论 -
一个有趣的题目以及解法
一个算法题以及其解法原创 2023-11-24 16:25:32 · 48 阅读 · 0 评论 -
Day10——二叉树存储
层次遍历的特点:从根结点出发,获取根结点的值,然后获取根结点的左 孩 子的值,再是根结点的右 孩 子然后是根结点的左 孩 子,根结点左 孩 子 的右孩子;因为文件都是存储在磁盘上的,也就是外存,但我们在执行程序的时候,是需要将程序对应的进程加载到内存中,并且进程在内存中的地址不是固定的,这表明我们不能保证保存在文件中的指针在下次运行时所指向的内容还是我们之前所指向的内容。完全二叉树:如果树高为h,除了第h层,其它各层(1~h-1)的结点数都达到最大个数,且第h层的结点都依次排列在该层的最左边的位置上。转载 2023-11-24 16:23:52 · 43 阅读 · 0 评论 -
图解:最小堆构建、存储、插入、删除过程
堆分为大根堆和小根堆,是完全二叉树。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。调整时先在左右儿子结点中找最小的,如果父结点比这个最小的子结点还小说明不需要调整了,反之将父结点和它交换后再考虑后面的结点。从末尾节点的父节点的这棵树开始调整,根据小根堆的性质,越小的数据往上移动,注意,被调整的节点还有子节点的情况,需要递归进行调整。对于「最大值」,我们可以想到一种非常合适的数据结构,那就是优先队列(堆),其中的大根堆可以帮助我们实时维护一系列元素中的最大值。转载 2023-11-24 14:24:02 · 148 阅读 · 0 评论